如何从任何开始日期和任何结束日期得到总和(文件.txt)Python

2024-09-24 06:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我已经被困在这几个星期了。如果我在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

我想要什么。 用户输入开始日期(我的文件中的开始日期,例如2014年1月3日)

用户输入结束日期(结束日期也来自文件,例如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)

Tags: 文件函数代码datetimedate时间endtotal
1条回答
网友
1楼 · 发布于 2024-09-24 06:30:29

嗨,你可以使用以下代码

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

相关问题 更多 >