尝试解析数据文件(如下所示),仅查找用户在特定日期之前开始的行。然后按升序(按开始日期)从这些行的单词列中排序值
id, name, start_date, role, end_date, words
657, mystical, 1351140260, cleaner, 1951140260, very lazy
1987, kanyau, 1451189768, watchman, 1539742445, sleeping
有人可以帮忙吗?
P.S:新手在这里,但这是我一直在玩的东西。date_pivot = "6/09/2010 00:00:00"
d = datetime.strptime(date_pivot, "%d/%m/%Y %H:%M:%S")
date_pivot = time.mktime(d.timetuple())
dp = int(date_pivot)
infile = csv.DictReader(open("sample_data.csv","rb"), delimiter=",")
previous_users = [row for row in infile if row['start_date'] < 'dp']
#print previous_users
with open('final_test.csv','wb') as fou:
dw = csv.DictWriter(fou, previous_users.keys())
dw.writeheader()
dw.writerow(my_dict)
答案 0 :(得分:0)
应该相当简单。由于您需要键入convert并对键函数执行查找,因此lambda
最简单:
previous_users.sort(key=lambda row: int(row['start_date']))
注意:将previous_users.keys()
传递给DictWriter
作为字段名称是错误的。一,您需要previous_users[0].keys()
(在验证它是非空的之后),因为previous_users
是list
dict
,而不是dict
。其中两个dict
没有定义的排序,因此您的输出列可能会重新排列。如果这不是问题,那就这样吧。但您可能希望以所需顺序明确传递字段名称,或者从DictReader
以正确的顺序读取它们,例如csv.DictWriter(fou, infile.fieldnames)
附加拼写错误:大概你要比较int(row['start_date']) < dp
;您需要转换为int
,并且希望与dp
中的值进行比较,而不是字符串"dp"
。