【问题标题】:Sorting integers in a csv file - python对csv文件中的整数进行排序-python
【发布时间】:2015-05-24 17:55:24
【问题描述】:

我有一个如下所示的 csv 文件:

Tom,10
Jack,10
Alice,10
Ben,9

我需要能够按第二列从高到低排序。 我试过以下代码:

import csv

file = open("bestscores.csv","r")
reader = csv.reader(file, delimiter = ' ')

sort = sorted(reader,key=lambda x: int(x[1]), reverse=True)
print(sort)

这会导致以下错误:

ValueError: invalid literal for int() with base 10: 'Tom,10'

我该如何解决这个问题?

【问题讨论】:

    标签: python sorting csv


    【解决方案1】:

    您使用了错误的分隔符并排序了错误的索引。这应该适合你:

    import csv
    
    with open("bestscores.csv","r") as fh
      reader = csv.reader(fh, delimiter = ',')
    
      sort = sorted(reader, key=lambda x: int(x[1]), reverse=True)
      print(sort)
    

    【讨论】:

    • 如果它对你有用,你能接受答案吗?
    • 您应该使用 with 打开文件或至少关闭它
    • 您不需要明确添加delimiter = ','
    【解决方案2】:

    你也可以这样做,

    with open('file') as f:
        print(''.join(sorted(f, key=lambda x: int(x.split(',')[1]), reverse=True)))
    

    【讨论】:

    • 可以在文件对象上调用 sorted
    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 2015-06-14
    • 2017-04-16
    • 1970-01-01
    • 2014-02-07
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多