如何在终端中将Python输出的文本对齐成列?
我在终端窗口里打印一些脚本的值,像这样:
for i in items:
print "Name: %s Price: %d" % (i.name, i.price)
我该怎么把这些值对齐成列呢?
3 个回答
1
你还可以使用 rjust() 和 ljust() 这两个方法来处理字符串对象。
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)
18
如果你知道两个列中数据的最大长度,那么你可以使用格式说明符。比如说,如果名字最多20个字符长,而价格最多10个字符,你可以这样做:
print "Name: %-20s Price: %10d" % (i.name, i.price)
这样比使用制表符要好,因为在某些情况下,制表符可能对不齐(例如,如果一个名字比另一个长很多)。
如果有些名字放不下,那么你可以用.
格式说明符来截断数据。比如说,使用“%-20.20s”来格式化名字,就可以把超过20个字符的名字截断,适应20个字符的列。