我正在终端窗口中的脚本中打印出一些值,如下所示:
for i in items:
print "Name: %s Price: %d" % (i.name, i.price)
Run Code Online (Sandbox Code Playgroud)
如何将这些排列成列?
Vin*_*jip 18
如果您知道两列中的最大数据长度,则可以使用格式限定符.例如,如果名称最多20个字符长,价格将适合10个字符,您可以这样做
print "Name: %-20s Price: %10d" % (i.name, i.price)
Run Code Online (Sandbox Code Playgroud)
这比使用制表符更好,因为制表符在某些情况下不会排列(例如,如果一个名称比另一个名称长一点).
如果某些名称不适合可用空间,则可以使用.格式限定符截断数据.例如,对名称格式使用"%-20.20s"将截断任何更长的名称以适合20个字符的列.
正如Vinay所说,使用字符串格式说明符.
如果您不知道最大长度,可以通过列表中的额外传递找到它们:
maxn, maxp = 0, 0
for item in items:
maxn = max(maxn, len(item.name))
maxp = max(maxp, len(str(item.price)))
Run Code Online (Sandbox Code Playgroud)
然后使用'*'而不是数字,并提供计算的宽度作为参数.
for item in items:
print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14086 次 |
| 最近记录: |