如何在文本文件的单独行上打印

时间:2015-04-24 20:40:36

标签: python file

我的任务是将得分(最后3个数字)从最高到最低排序。然而,这是有效的,我希望每个人的分数输出到单独的行。我该怎么做呢。这是我的代码:

elif ask==2:
    list_data2=[]
    with open('write_it.txt') as f:
          for line in f:
              line=line.split(',')
              list_data2.append(sorted(line[:1])+sorted(map(int,line[2:]),reverse=True))
    print (list_data2)

list_data2是嵌套的list

[['Sid', 9, 8, 7], ['Tony', 9, 6, 4], ['Charlie', 4, 2, 1]]

1 个答案:

答案 0 :(得分:0)

您可以使用for循环逐个打印每个嵌套列表:

>>> for data2 in list_data2:
        print(data2)

['Sid', 9, 8, 7]
['Tony', 9, 6, 4]
['Charlie', 4, 2, 1]

但是如果你想以更好的方式对其进行格式化,你可以传递多个参数来打印,比如print(data2[0], data2[1], data2[2], data2[3]),或者简而言之,使用print(*data2)

>>> for data2 in list_data2:
        print(*data2)

Sid 9 8 7
Tony 9 6 4
Charlie 4 2 1

使用带有多个参数的print时的默认分隔符是' ',但您可以使用关键字参数sep更改它:

>>> for data2 in list_data2:
        print(*data2, sep='\t')

Sid     9   8   7
Tony    9   6   4
Charlie 4   2   1

请注意,标签宽度取决于您的终端设置。您可以使用具有固定宽度列的格式字符串(由空格字符填充)来实现类似的效果:

>>> for data2 in list_data2:
        print('%-12s %3d %3d %3d' % tuple(data2))

Sid            9   8   7
Tony           9   6   4
Charlie        4   2   1

但是,这种类似printf的%语法已被弃用,您应该使用str的新.format()方法:

>>> for data2 in list_data2:
        print('{0:<12} {1:3d} {2:3d} {3:3d}'.format(*data2))

Sid            9   8   7
Tony           9   6   4
Charlie        4   2   1

(有关更多示例,请参阅https://docs.python.org/2/library/string.html#format-examples