格式化不完美

时间:2013-12-07 12:51:01

标签: python list formatting tuples

我的代码循环遍历一个元组列表,并在我认为会给我一个漂亮的表格中显示它们,但是当它显示它们时它们没有一个漂亮的表格,它们开始变得格式化并且看起来很糟糕。“ p>

for i in range(0,(len(l)-1)):
        print("{:<30s}{:<30s}{:<6s}{:<15s}£{:>6s}".format(l[i][4],l[i][3]\
                                                    ,l[i][0],l[i][2],l[i][1]))

Here's how the spacing looks awful.

每一行都是一个包含五个变量的元组。间距是否正常,这只是我的电脑显示它的方式,还是我使用的格式代码有问题?

另外,使用格式化如何使每个人的姓氏后面都有一个逗号,并且薪水直接在其前面加上“£”。

谢谢。

1 个答案:

答案 0 :(得分:0)

# -*- coding: cp1252 -*-

pat = "{:<30s}{:<30s}{:<6s}{:<15s}£{:>6s}"

l = [("12345",'35000','Consultant','Bart','Simpson'),
      ("12346","25000","Teacher","Ned","Flanders")]

d = dict.fromkeys(xrange(5))
for x in l:
    for i in xrange(5):
        d[i] = max(d[i],len(x[i]))
print '\n'.join('%s : %d' % item for item in d.iteritems())

pat = "{4:<%s} {3:<%s} {0:<%s} {2:<%s} £{1:>%s}"\
      %(d[4],d[3],d[0],d[2],d[1])

for x in l:
    print pat.format(*x)

但是对于熊猫来说,它会更简单。让我来一些时间来添加Pandas的解决方案