我编写了这段代码,用于在Python中对csv文件进行排序。
ROW_NUMBER
我正在尝试按数组中的第二项排序文件,例如,如果在我的文件中,我有:
import csv
from operator import itemgetter
reader = csv.reader(open("highscores.txt"), delimiter=",")
sortedList = sorted(reader, key=itemgetter(1), reverse=True)
print(sortedList)
它将它排序为:
Callum,22
Kim,43
然而,当我运行程序时,我收到错误消息:
Kim,43
Callum,22
编辑:
我已经解决了这个问题,问题不在于sort函数本身,但是由于某些原因,这个文件只能在python 2.7中运行。
答案 0 :(得分:0)
你可以使用lambda来进行类型转换等。与上面的例子类似,下面的行会做你想要的(我保持排序等默认):
r = csv.reader(open("test.txt"))
sorted(r, key=lambda x: int(x[1]))
您可以在https://wiki.python.org/moin/HowTo/Sorting
了解更多详情这些是显示版本和平台的完整详细信息:
Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> r = csv.reader(open("test.txt"))
>>> sorted(r, key=lambda x: int(x[1]))
[['Can', ' 2'], ['Try', ' 5'], ['Science', ' 12'], ['Math', ' 22'], ['Life', ' 35']]
其中test.txt如下:
Science,12
Math,22
Life,35
Can,2
Try,5
答案 1 :(得分:0)
我的假设是你遗漏了一些数据。以下是该案例的解决方法:
import csv
with open("highscores.txt") as data:
data = csv.reader(data)
data = [item for item in data]
for i, item in enumerate(data):
try:
item = int(item[1])
except:
data[i].append('0')
items = sorted(data, key=lambda x: int(x[1]), reverse=True)
print(items)