2015-04-24 44 views
-1

我的任务是将得分(最后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]] 
+2

这将是更新与输入文件的结构和预期产出的问题还有一个好主意。 – fixxxer

+0

欢迎来到SO!由于您是新手,您可能需要查看此[链接](http://meta.stackexchange.com/a/5235/187716)。 – fferri

回答

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 

默认的分隔符使用打印有多个参数的时候是' ',但你可以在使用关键字参数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%语法已被弃用,你应该使用新.format()方法的str

(见https://docs.python.org/2/library/string.html#format-examples更多的例子)

相关问题