如何将python中的文本排列到终端中的列中?

时间:2009-08-31 06:08:43

标签: python

我正在终端窗口中的脚本中打印出一些值,如下所示:

for i in items:
    print "Name: %s Price: %d" % (i.name, i.price)

如何将这些排列成列?

3 个答案:

答案 0 :(得分:18)

如果您知道两列中的最大数据长度,则可以使用格式限定符。例如,如果名称最多20个字符,价格将适合10个字符,您可以

print "Name: %-20s Price: %10d" % (i.name, i.price)

这比使用制表符更好,因为在某些情况下制表符不会排列(例如,如果一个名称比另一个名称长一点)。

如果某些名称不适合可用空间,则可以使用.格式限定符截断数据。例如,对名称格式使用“%-20.20s”将截断任何更长的名称以适合20个字符的列。

答案 1 :(得分:9)

正如Vinay所说,使用字符串格式说明符。

如果您不知道最大长度,可以通过列表中的额外传递找到它们:

maxn, maxp = 0, 0
for item in items:
    maxn = max(maxn, len(item.name))
    maxp = max(maxp, len(str(item.price)))

然后使用'*'代替数字,并将计算出的宽度作为参数。

for item in items:
    print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price)

答案 2 :(得分:0)

您还可以对str对象使用rjust()/ ljust()方法。