Python str.format()方法不按预期工作
问题描述:
我想格式化一些输出,我在屏幕上打印。这里是我的代码:Python str.format()方法不按预期工作
someString = someList[someIndex] + '{0:<8}'.format('\t') + someList[someOtherIndex]
print someString
我的预期输出:
abcdefghi someOutput abcde someOtherOutput **OR** abcdefghi someOutput abcde someOtherOutput
实际输出我得到:
abcdefghi someOutput abcde someOtherOutput
问题1:为什么我没有得到预期的输出?具体而言,为什么第二列中的条目错位?
Q.2:我应该在代码中更改哪些内容才能获得预期输出?
附加信息:我正在使用Python 2.6
感谢任何帮助。
答
您必须申请“填满”上打印的第一个字符串,使得它“推”始终是第二个在同一点:
someString = '{0:<16}{1}'.format(someList[someIndex], someList[someOtherIndex])
确保您所需要的填充较大不过,要打印最长的第一个单词。
你之前做的只是打印第一个单词,然后用填充(总是相同的)打印'\ t',最后打印第二个单词。
meh我只是会做一些类似于'print'%-16s%s“%(”abcde“,”someOutput“)'...即使%格式被折旧了......它会在一段时间内出现 – 2012-07-27 18:29:50
但是为什么不学会使用推荐的str.format()? – NGambit 2012-07-27 18:33:19
我确定我会在需要时(例如,使用一种版本的python警告说这种方法的折旧或不再支持它的版本...它看起来不太硬..我只是喜欢旧版本更好,并会继续使用它们,只要我使用支持它们的python – 2012-07-27 18:38:04