首页 > 解决方案 > 试图在列表中查找对象,但它不起作用

问题描述

所以我的项目包括尝试从这个文件(data.txt)中获取所有数据并过滤以找到上周的值,所以我曾经datetime.timedelta获取一个包含当天和前 6 天的所有日期的列表,但是当我尝试在文件中查找数据的日期并将其与“上周列表”中的日期进行比较时,它不起作用,即使它们都是字符串并且都采用相同的模式 YY-MM- DD。它们是相同的,但它总是返回 false。这是我的第一篇文章,所以可能有点混乱,但如果你能帮助我,那就太好了。

这就是 data.txt 的内容,它包含会话持续时间、开始时间、结束时间和会话的当前日期。

0.6351542472839355;16:12:46.275692;16:12:46.910832;2020-07-08
0.24894213676452637;16:12:47.867543;16:12:48.116485;2020-07-08
0.2877843379974365;16:12:48.824725;16:12:49.112509;2020-07-08
200.29360198974609375;16:12:49.754576;16:12:50.048178;2020-07-08
200.25270724296569824;16:12:50.636086;16:12:50.888793;2020-07-08
3000.2298729419708252;16:12:51.469012;16:12:51.698880;2020-07-08

SESSION DURATION ; START TIME ; END TIME ; DATE
def last_week_hours():
    today = date.today()
    lastweekhours = 0
    weeklist = []
    for i in range(0,7):
        wdate = today - timedelta(days=i)
        weeklist.append(str(wdate))
    db = open('data.txt', 'rt')
    for line in db:
        info = line.split(';')
        sdate = info[3]
        sduration = info[0]
        if sdate in weeklist:
            print('sdate is in weeklist')
            lastweekhours += sduration

标签: pythonlist

解决方案


我建议也许在您的“for line in db:”循环中执行 sdate.strip(),以删除可能会或可能不会弄乱相等性检查的任何前导或尾随空格。


推荐阅读