我正在终端窗口中的脚本中打印出一些值,如下所示:
for i in items:
print "Name: %s Price: %d" % (i.name, i.price)
如何将这些排列成列?
答案 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()方法。