【发布时间】:2016-07-07 02:46:48
【问题描述】:
假设输入'table'是一个字符串列表,目标是创建并返回一个格式化的
表示二维表的字符串。
- 二维表的每一行都在单独的一行;最后一行后跟一个空行
- 每一列都向左对齐;
- 列用单个竖线“|”分隔;并且必须只有一个空格 竖线前后;
- 每一行都以竖线开始和结束;并且后面必须有一个空格 前导小节和结束小节之前
这是我得到的:
def show_table(table):
new_string = ''
for i in table:
for j in range(len(i)):
line = i[j]
new_string += '| {} '.format(i[j])
new_string += '|\n'
return new_string
当行间距相等时,我的代码在某些情况下有效。例如:
input: [['A','BB'],['C','DD']]
output: '| A | BB |\n| C | DD |\n'
print:| A | BB |
| C | DD |
但是,当行不相似时:
input: [['10','2','300'],['4000','50','60'],['7','800','90000']]
这会导致我的输出不同:
Right_output: '| 10 | 2 | 300 |\n| 4000 | 50 | 60 |\n| 7 | 800 | 90000 |\n'
my_output: '| 10 | 2 | 300 |\n| 4000 | 50 | 60 |\n| 7 | 800 | 90000 |\n'
正确的输出应该看起来像:
| 10 | 2 | 300 |
| 4000 | 50 | 60 |
| 7 | 800 | 90000 |
我的输出:
| 10 | 2 | 300 |
| 4000 | 50 | 60 |
| 7 | 800 | 90000 |
我需要在哪里修改我的代码以使我的打印输出匹配正确的输出?我想这与列的最大宽度有关?
【问题讨论】:
-
AFAICS 您的输出确实满足要求,而您想要的输出不满足要求(在一些竖线之前有多个空格)。现在,如果您仍然想要其他输出,那么是的,您需要先计算每列的宽度,然后在格式化每个字符串时使用它。这意味着遍历输入两次,我认为您无法避免它。
标签: python string formatting