我有一个这种格式的文本文件:
Robert, 03/07/1960
Michael, 24/11/1942
Simon, 14/08/1924
Sarah, 20/07/1935
Adam, 12/09/1944
Rachael, 24/09/1919
因为名字和生日用逗号分隔,每个人都有一个新行。 使用IDLE我想打印文本文件,并按出生日期列出最早到最年轻。
我修改了最初用于排序我在stackoverflow上读取的名称和分数的代码。但是,使用日期而不是分数会出现问题。我一直在阅读有关datetime模块的内容,并且一直在尝试根据生日元素进行排序,但我似乎无法使其正常工作。
import datetime
format = '%d/%m/%Y'
dates = []
with open("namedate.txt") as f:
for line in f:
line.strip()
name, date = line.split(',')
date = datetime.datetime.strptime(date, format)
dates.append((name, date))
dates.sort(key=lambda s: s[1])
for name, date in dates:
print(name, date)
我收到此错误:
ValueError: time data ' 03/07/1960\n' does not match format '%d/%m/%Y'
所以我需要削减' \ n'超出生日元素,但不能使它工作。
答案 0 :(得分:2)
功能是:
import datetime
format = '%d/%m/%Y'
dates = []
with open("namedate.txt") as f:
for line in f:
line = line.strip()
name, date = line.split(',')
date = datetime.datetime.strptime(date.strip(), format)
dates.append((name, date))
dates.sort(key=lambda s: s[1])
for name, date in dates:
print(name, date.strftime(format))
输出将是:
('Rachael', '24/09/1919')
('Simon', '14/08/1924')
('Sarah', '20/07/1935')
('Michael', '24/11/1942')
('Adam', '12/09/1944')
('Robert', '03/07/1960')