我有一个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的倍数的字符串),它会添加一个太多或一个太少的标签。
解决这个问题的最佳方式是什么?
答案 0 :(得分:0)
[编辑反映下面的讨论]
如果您的字母和标点符号的宽度不同,那么如果您(1)计算字符并使用等宽字体或(2)计算按宽度加权的字符然后添加正确数量的标签,则实际上只能指望对齐对齐下一列。
方法2比较棘手,因此只需使用第一种方法,使用不违反相同宽度字符假设的字体即可。