Python不寻常的文件排序



我有一个文本文件,其中包含以下方式的数据:

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}ttttn'.format('ttt '.join(i)))

你目前比较字符串,你需要比较整数:

lines.sort(key=lambda x:int(x[0]), reverse=True)

字符串按字典顺序比较,因此:

>>> '2' > '100'
True

转换为int修复此问题:

>>> int('2') > int('100')
False

还可以看看pandas,如果稍后要进行更复杂的操作,例如:

import pandas as pd
pd.read_table('filename.txt', header=None)
            .sort(columns=0)
            .to_csv('newfile.txt', sep='t', header=None, index=False)

相关内容

  • 没有找到相关文章

最新更新