将txt文件的内容打印到表格中

时间:2015-10-20 06:29:46

标签: python

我正在尝试编写一个打印出输入文件的函数:" table.txt"如左图所示:

enter image description here

进入图像右侧所见的格式。

我试过了:

*.**.nic...

哪个输出:

f = open("table1.txt",'r')
for aline in f:
    values = aline.split(',')
    print('Team:',values[0],', Points:',values[1],', Diff:',int(values[2])-int(values[3]),'Goals:',values[2]) 
f.close()

但是如何打印值以便行编号并且列具有标题:"团队,点数,差异,目标"?

2 个答案:

答案 0 :(得分:3)

您从上面的代码获得了什么输出?你会把它贴在这里吗?

如果要获得每行中重复列标题的输出,则必须在for循环上方打印Table标题,然后将其从内部打印 for 循环中删除。

f = open("table1.txt",'r')
print('Team \t Points \t Diff \t Goals')
a=1; 
for aline in f:
    values = aline.split(',')
    print(a, values[0], values[1], int(values[2])-int(values[3]), values[2]) 
    a++;
f.close()

这对你有帮助..

答案 1 :(得分:1)

我不确定这是否正是您所需要的,但我认为您想要的格式可能是这样的:

contents = []
with open('tables.dat', 'r+') as f:
    for line in f:
        contents.append(line.split(','))

max_name_length = max([len(line[0]) for line in contents])

print("    Team                       Points     Diff      Goals     \n")
print("--------------------------------------------------------------------------\n")
for i, line in enumerate(contents):
    line = [el.replace('\n', '') for el in line]
    print("{i:>3}  {0:<{fill_width}}   {1:>3}   {2:>3}   {3:>3}".format(i=i, *line, fill_width=max_name_length))

以下是一些示例输出:

    Team                       Points     Diff      Goals     

--------------------------------------------------------------------------

  0  FC Ingolstadt 04             13    -2     4
  1  Hamburg                       9    -2     8
  2  SV Darmstadt 98               9    -1     8
  3  Mainz                         9    -3     6
  4  FC Augsburg                   4    -5     7
  5  Werder Bremen                 6    -5     7
  6  Borussia Moenchengladbach     6    -6     9
  7  Hoffenheim                    5    -4     8
  8  VfB Stuttgart                 4    -8     9
  9  Schalke 04                   16    11    14
 10  Hannover 96                   2   -12     6
 11  Borrusia Dortmund            16    11    15
 12  Bayern Munich                18    16    18
 13  Bayer Leverkusen             14     3    11
 14  Eintracht Frankfurt           9     4    13
 15  Hertha BSC Berlin            14     1     5
 16  1. FC Cologne                13     0    10
 17  VfB Wolfsburg                14     4    10

编辑1:更新后的问题信息

编辑2:不需要目标的填充宽度规范(这是最后一个)

编辑3:以点,差异和目标值为中心。注意:我是通过实验手动完成的。如果值的长度超过2位,你将不得不做一些max_name_length类的事情。

编辑4:在看到样本输出的样子后更新。