首页 > 解决方案 > 如何检查字符串中的日期是否大于给定日期?蟒蛇 3

问题描述

所以我有一个用户的 CSV 文件,格式为:

"Lastname, Firstname account_last_used_date"

我试过 dateutil 解析器,但是它指出这个列表是一个无效的字符串。我需要把名字和日期放在一起。我也尝试过日期时间,但我遇到了“未定义日期时间”的问题。我对 Python 很陌生,所以如果我错过了一个简单的解决方案,请原谅我。

import re
from datetime import date

with open("5cUserReport.csv","r") as dilly:
    li = [(x.replace("\n","")) for x in dilly]
    li2 = [(x.replace(",","")) for x in li]

    for x in li2:
        match = re.search(r"\d{2}-\d{2}-\d{4}", x)
        date = datetime.strptime(match.group(), "%d-%m-%Y").x()
        print(date)

最终目标是我需要检查用户上次登录的日期是否超过 4 个月。老实说,这里的任何帮助都非常受欢迎!

CSV 格式为:

am_testuser1 02/12/2017 08:42:48
am_testuser11 13/10/2017 17:44:16
am_testuser20 27/10/2017 16:31:07
am_testuser5 23/08/2017 09:42:41
am_testuser50 21/10/2017 15:38:12

标签: python

解决方案


编辑:根据给定的 csv 编辑答案

你可以用熊猫做这样的事情

import pandas as pd

colnames = ['Lastname,   Firstname', 'Date', 'Time']
df = pd.read_csv('5cUserReport.csv', delim_whitespace=True, skiprows=1, names=colnames, parse_dates={'account_last_used_date': [1,2]}, dayfirst =True)

more_than_4_months_ago = df[df['account_last_used_date'] < (pd.to_datetime('now') - pd.DateOffset(months=4))]
print(more_than_4_months_ago)

more_than_4_months_ago根据 account_last_used_date 是否超过 4 个月,DataFrame将为您提供所有记录的子集。

这是基于给定的格式。尽管我怀疑这是您的实际格式,因为给定的用户名与格式“名字,姓氏”并不真正匹配

Lastname, Firstname account_last_used_date
am_testuser1 02/12/2017 08:42:48
am_testuser11 13/10/2018 17:44:16
am_testuser20 27/10/2017 16:31:07
am_testuser5 23/08/2018 09:42:41
am_testuser50 21/10/2017 15:38:12

(我将 2 行编辑为 2018,以便测试实际上表明它有效)。


推荐阅读