你好,我已经被这个问题困扰了好几个星期了。如果我有一个保存在file.dat文件或文本文件中的列表,其中包含以下信息:
1-3-2014,job4,51081.5,10
10-10-2014,job3,1010.1,35
4-2-2015,job2,61824.7,35
2-4-2016,Job1,222.1,12
(用逗号分隔,因为它们位于不同的标题下,如下所示,我已经编写了代码,在函数中显示如下)
print (" Heading1 Heading 2 heading 3 heading 4 ")
1-3-2014 job4 $51081.5 10
10-10-2014 job3 $1010.1 35
4-2-2015 job2 $61824.7 35
2-4-2016 jon1 $222.1 12
我想要什么。用户输入开始日期(在我的文件中的开始日期,例如1 3 2014)
用户输入结束日期(结束日期也来自文件,例如4 2 2015)
程序打印总额(例如,总额为$……(开始$$到结束日期的总和是多少),它应该将开始日期的$和中间的所有日期一直加到结束日期,并打印最终总额。
感谢
下面的代码是我尝试过的,但得到的时间数据与格式'%d/%m/%Y'不匹配。(也有可能在我听说的函数中这样做吗?这可能是正确的方法。
从日期时间导入日期时间
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)
嗨,您可以使用以下代码,
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