在python中将2D数组显示为表

时间:2018-03-17 00:38:59

标签: python multidimensional-array formatting

我有一个2D数组(我知道它严格来说是一个列表列表,但就我的目的而言,二维数组这个术语很好用)称为结果,这些结果充满了我希望在一个很好的字符串中显示的字符串。内衬向上"格式。请记住,我真的不想在这里使用任何导入的模块。

我的第一次尝试:

for i in range (len(results)):
    line = results[i]
    print(line[0].ljust(30), line[1], line[2])
由于字母(和点缀等)的宽度不同,所以一切都令人震惊。

我的第二次尝试:

for i in range (len(results)):
    line = results[i]
    foo = line[0]
    foo = foo.ljust(len(foo)+(7-len(foo)//9), "\t")
    print(foo, line[1], line[2])

工作得更好,但是对于大约十分之一的线(基本上任何长度为+/- 1且9的倍数的字符串),它会添加一个太多或一个太少的标签。

解决这个问题的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

[编辑反映下面的讨论]

如果您的字母和标点符号的宽度不同,那么如果您(1)计算字符并使用等宽字体或(2)计算按宽度加权的字符然后添加正确数量的标签,则实际上只能指望对齐对齐下一列。

方法2比较棘手,因此只需使用第一种方法,使用不违反相同宽度字符假设的字体即可。