我正在尝试读取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()函数,在创建一个空列表后填充然后将其附加到行,但我不知道在何处或如何将其合并到现有代码中,以及一直非常不成功。任何帮助将不胜感激。
答案 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)