Python异常文件排序

rka*_*kam 3 python sorting file

我有一个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
Run Code Online (Sandbox Code Playgroud)

在文件中,每个值都使用\ 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
Run Code Online (Sandbox Code Playgroud)

但我得到的实际输出是:

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
Run Code Online (Sandbox Code Playgroud)

它将值作为字符串,因此不将整数值作为整数.我试过解析,但它无法正常工作.

我的代码:

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)))
Run Code Online (Sandbox Code Playgroud)

请尽可能帮助.

Ash*_*ary 10

您当前正在比较字符串,您需要比较整数:

lines.sort(key=lambda x:int(x[0]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

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

>>> '2' > '100'
True
Run Code Online (Sandbox Code Playgroud)

转换以int解决此问题:

>>> int('2') > int('100')
False
Run Code Online (Sandbox Code Playgroud)