我有一个包含 3 列数字数据的文本文件,我想按降序分别对文件的每一行进行排序。
输入文件:
12 10 5
1 120 3
-1 1 10
-1 -1 -1
输出文件:
12 10 5
120 3 1
10 1 -1
-1 -1 -1
我刚刚尝试像这样使用 sorted()
函数:
with codecs.open('BI_TA','r') as f:
with codecs.open('ta_sort','w') as ff:
for line in f.readlines():
line=sorted(line)
ff.write(line)
但这行不通。
替换:
line=sorted(line)
由:
line=' '.join(sorted(line.split(), key=int, reverse=True))
假设当前行是"1 120 3"。以下操作应用于此行:
-
line.split()
->['1', '120', '3']
-
sorted(['1', '120', '3'], key=int, reverse=True)
->['120', '3', '1']
排序在递减的矿石中,由于key=int
,将每个值视为int
。 -
line = ' '.join(['120', '3', '1'])
->"120 3 1"
将列表转换为字符串,因为file.write()
只接受字符串。
list(line).sort() 应该可以工作。