【发布时间】:2015-07-07 00:15:17
【问题描述】:
我关注http://automatetheboringstuff.com/chapter6/
在页面的最底部是关于格式化表格的练习。
这是我的代码:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def printTable(table):
colWidths = [0] * len(table)
for line in table:
max = 0
for word in line:
if len(word) > max:
max = len(word)
colWidths[table.index(line)] = max
for a in range(len(table)-2):
for b in range(len(table[0])):
print(table[a][b].rjust(colWidths[0])+table[a+1][b].rjust(colWidths[1])+table[a+2][b].rjust(colWidths[2]))
"""
print(table[0][0].rjust(colWidths[0]), table[1][0].rjust(colWidths[1]), table[2][0].rjust(colWidths[2]))
print(table[0][1].rjust(colWidths[0]), table[1][1].rjust(colWidths[1]), table[2][1].rjust(colWidths[2]))
print(table[0][2].rjust(colWidths[0]), table[1][2].rjust(colWidths[1]), table[2][2].rjust(colWidths[2]))
print(table[0][3].rjust(colWidths[0]), table[1][3].rjust(colWidths[1]), table[2][3].rjust(colWidths[2]))
"""
print()
printTable(tableData)
注释掉的行格式化所有内容。实际代码没有。为了使其格式正确,我需要为每列添加 1 到 .rjust()(例如,对于 100 列,我必须添加到 .rjust(colWidths[1]+99))。
当我手动打印时它似乎工作得很好,为什么会发生这种情况?
【问题讨论】:
-
您是否尝试过像在手动打印语句中那样在 for 循环打印语句中使用逗号分隔表值?更多信息here.
标签: python python-3.x formatting