尝试从txt.file(PYTHON)获取总和时,输入中出现时间数据错误



我试图制作的程序应该让用户输入开始日期和结束日期,并且该程序要遍历包含等信息的txt文件中的列表

1-2-2014,store1,42305.67,23
12-4-2014,store2,21922.22,17
10-2-2015,store3,63277.9,32
10-5-2015,store4,83290.09,16

信息用逗号分隔。第三个数字是代表金钱的数值。例如,如果用户输入(参考上面的txt文件信息示例)

start date as 1-2-2014
end date as 10-2-2015

该程序旨在计算从开始日期起代表货币的数字,包括从两个日期之间的数字(如果有)(我输入的上述示例日期显示中间有一个日期),并打印总额。

该程序应该与txt文件中的任何开始和结束日期输入一起工作,如果没有记录,则打印不存在这样的记录。

下面是两个不同的程序,在其他人的帮助下,我想出了两个程序,它们应该做到这一点,但会产生错误,我希望有人能纠正并指出我的错误。

代码一,末尾有错误:

from datetime import datetime
def calculate(file_name, s_date, e_date):
dollar = 0
_format = '%d-%m-%Y'
start_date = datetime.strptime(s_date, _format)
end_date = datetime.strptime(e_date, _format)
with open(file_name) as f:
lines = f.readlines()
for line in lines:
l = line.split(',')
date = datetime.strptime(l[0], _format)
if date >= start_date and date <= end_date:
dollar = dollar + float(l[2])
return dollar
start_date = raw_input('Enter start date')
end_date = raw_input('Enter end date')
result = calculate('file.dat', start_date, end_date)
print (result) 

ValueError: time data 'n' does not match format '%d-%m-%Y'

FYI(日期输入为2014年1月2日和2015年10月2日)

下面的代码2,末尾有错误:

from datetime import datetime
begin_date = datetime.strptime(input('Enter start date (dd mm yyyy): '), '%d %m %Y')
end_date = datetime.strptime(input('Enter end date (dd mm yyyy): '), '%d %m %Y')
with open ('data.txt', 'r') as f:
total = 0
for line in f:
strlist = line.rstrip().split(',')
dt = datetime.strptime(strlist[0], '%d %m %Y')
if begin_date <= dt <= end_date:
total+=float(strlist[2].split('$')[1])


print(total)


ValueError: time data '' does not match format '%d %m %Y'

谢谢。溶液的绿色勾号

日期格式中的问题:

%m  Month as a zero-padded decimal number.
%d  Day of the month as a zero-padded decimal number.

您使用的是这种格式,但它们必须包含2位数字。

比如01、03、10等等。

Python文档

最新更新