繁体   English   中英

如何检查字符串中的日期是否大于给定日期? Python 3

[英]How to check if a date in a string is greater than a given date? Python 3

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

"Lastname, Firstname account_last_used_date"

我已经尝试过dateutil解析器,但是它指出此列表是无效的字符串。 我需要把名字和日期放在一起。 我也尝试过datetime,但是我遇到了“ datetime not defined”的问题。 我对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

编辑:根据给定的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个月前为您提供所有记录的子集。

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

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年,以便测试实际上表明它有效)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM