如何以升序Python打印csv行

时间:2016-09-16 06:58:04

标签: python sorting csv

我正在尝试读取csv文件,并仅在日期是2010年9月6日之前解析数据并返回行(start_date)。然后按行(单词)按升序打印相应的值。我可以使用以下内容完成上半部分:

import csv

with open('sample_data.csv', 'rb') as f:

read = csv.reader(f, delimiter =',')

for row in read:

    if row[13] <= '1283774400':
        print(row[13]+"\t \t"+row[16])

它返回正确的start_date范围和相应的单词列值,但它们不按升序返回,如果正确完成则会显示消息。

我尝试使用sort()和sorted()函数,在创建一个空列表后填充然后将其附加到行,但我不知道在何处或如何将其合并到现有代码中,以及一直非常不成功。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

只需阅读列表,根据< date条件筛选列表,然后根据第13行将其排序为整数

请注意,常见的错误是过滤为ASCII(可能看起来有效),但需要进行整数转换以避免排序问题。

import csv

with open('sample_data.csv', 'r') as f:
    read = csv.reader(f, delimiter =',')
    # csv has a title, we have to skip it (comment if no title)
    title_row = next(read)
    # read csv and filter out to keep only earlier rows
    lines = filter(lambda row : int(row[13]) < 1283774400,read)

# sort the filtered list according to the 13th row, as numerical
slist = sorted(lines,key=lambda row : int(row[13]))

# print the result, including title line
for row in title_row+slist:
    #print(row[13]+"\t \t"+row[16])
    print(row)