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

感谢任何帮助。

+0

meh我只是会做一些类似于'print'%-16s%s“%(”abcde“,”someOutput“)'...即使%格式被折旧了......它会在一段时间内出现 – 2012-07-27 18:29:50

+2

但是为什么不学会使用推荐的str.format()? – NGambit 2012-07-27 18:33:19

+0

我确定我会在需要时(例如,使用一种版本的python警告说这种方法的折旧或不再支持它的版本...它看起来不太硬..我只是喜欢旧版本更好,并会继续使用它们,只要我使用支持它们的python – 2012-07-27 18:38:04

您必须申请“填满”上打印的第一个字符串,使得它“推”始终是第二个在同一点:

someString = '{0:<16}{1}'.format(someList[someIndex], someList[someOtherIndex]) 

确保您所需要的填充较大不过,要打印最长的第一个单词。

你之前做的只是打印第一个单词,然后用填充(总是相同的)打印'\ t',最后打印第二个单词。

+0

谢谢。是否有一个很好的在线资源,可以用例子详细解释所有这些内容?我查看了一些Python文档,但没有包含任何示例。 – NGambit 2012-07-27 19:06:40

+0

我很抱歉,文档尽可能详细(http://docs.python.org/library/string.html#format-examples)。但对于这些示例,您必须打开一个终端并尝试一下,这是学习的最佳方式。 – Wookai 2012-07-27 19:22:18