Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 按文件包含的e值列对文件内容进行正确排序_Python 2.7_Sorting - Fatal编程技术网

Python 2.7 按文件包含的e值列对文件内容进行正确排序

Python 2.7 按文件包含的e值列对文件内容进行正确排序,python-2.7,sorting,Python 2.7,Sorting,我想根据一列e值(从最后一列算起的第三列)对以制表符分隔的文件的内容进行排序,就像在excel中执行的那样。我的文件如下: or1|306502419 or1|306502419 100 1175 0 0 1 1175 1 1175 1.10E-18 2381.7 100 or1|306502428 or1|306502428 100 704 0 0 1 704 1 704 1.10E-22 1354 100

我想根据一列e值(从最后一列算起的第三列)对以制表符分隔的文件的内容进行排序,就像在excel中执行的那样。我的文件如下:

or1|306502419   or1|306502419   100 1175    0   0   1   1175    1   1175    1.10E-18    2381.7  100
or1|306502428   or1|306502428   100 704 0   0   1   704 1   704 1.10E-22    1354    100
or1|306502451   or1|306502451   100 1039    0   0   1   1039    1   1039    1.10E-918   2081.2  100
or1|306502451   or2|315578614   99.1    1039    9   0   1   1039    1   1039    6.70E-296   2065.8  100
or1|306502443   or1|306502443   100 551 0   0   1   551 1   551 6.20E-297   1100.9  100
or1|306502365   or1|306502365   100 620 0   0   1   620 1   620 0   1221.1  100
or1|306502365   or3|315163411   99.7    620 2   0   1   620 1   620 0   1219.1  100
or1|306502371   or3|315163404   100 590 0   0   1   590 1   590 0   1209.5  100
or1|306502371   or1|306502371   100 590 0   0   1   590 1   590 0   1209.5  100
or1|306502380   or1|306502380   100 560 0   0   1   560 1   560 1.10E-10    1113.6  100
or1|306502380   or3|315163395   98.9    560 6   0   1   560 1   560 1.10E-14    1098.2  100
我试过:

d_list = [line.strip() for line in open("input_file.txt")]
d_list.sort(key = lambda line: line.split("\t")[-3])
for line in d_list:
   print line 
但排序后的e值为:

0
0
0
0
1.10E-10
1.10E-14
1.10E-18
1.10E-22
1.10E-918
6.70E-296
6.20E-297
但我希望他们:

0
0
0
0
1.10E-918
6.20E-297
6.70E-296
1.10E-22
1.10E-18
1.10E-14
1.10E-10
请注意,我也尝试过

反向=真

第2行中的标志,但它向上放置较低的e值,而不是0

请允许我建议。
感谢您的考虑

您将它们排序为字符串,而不是数字。您需要首先将e值转换为一个数字。从外观上看,
float
精度对您来说是不够的(1.10E-918将变为0.0),因此您可以使用
Decimal

from decimal import Decimal
d_list.sort(key = lambda line: Decimal(line.split("\t")[-3]))