我有一个包含以下数据的 txt 文件:
23 1 65 15 19.2
19 2 66 25 25.7
10 3 67 35 16.5
100 4 68 45 10.4
20 5 69 55 6.8
201 6 64 65 9.2
在文件中,每个值使用\t 和下一行的\n 分开。
我想根据每一行的第一个值对这个文件进行排序。 我的预期输出是:
10 3 67 35 16.5
19 2 66 25 25.7
20 5 69 55 6.8
23 1 65 15 19.2
100 4 68 45 10.4
201 6 64 65 9.2
但我得到的实际输出是:
10 3 67 35 16.5
100 4 68 45 10.4
19 2 66 25 25.7
20 5 69 55 6.8
201 6 64 65 9.2
23 1 65 15 19.2
它将值作为字符串,因此不会将整个数字值作为整数。 我尝试解析,但它不起作用。
我的代码:
with open('filename.txt') as fin:
lines = [line.split() for line in fin]
lines.sort(key=itemgetter(0),reverse=True)
with open('newfile.txt', 'w') as fout:
for i in lines:
fout.write('{0}\t\t\t\t\n'.format('\t\t\t '.join(i)))
如果可能请帮忙。
最佳答案
您当前正在比较字符串,您需要比较整数:
lines.sort(key=lambda x:int(x[0]), reverse=True)
字符串是按字典序比较的,所以:
>>> '2' > '100'
True
转换为 int
修复了这个问题:
>>> int('2') > int('100')
False
关于Python异常文件排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608263/