python - 如何检查字符串中的日期是否大于给定日期?蟒蛇 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
解决方案
编辑:根据给定的 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,以便测试实际上表明它有效)。
推荐阅读
- typescript - 如何避免 Firebase 警告我正在使用开发版本?
- docker - 如何在 docker 中创建和运行 .net Core Console App
- angular - Angular:在其他组件中插入字符串 Kendo CellClickEvent
- webstorm - WebStorm:忽略项目中的文件而不从源代码管理中删除?
- reactjs - 使用 Flow 和 redux-navigation 验证通用 React 组件属性
- python - 需要安装错误“Visual c++ 14.0”的python模块
- javascript - 在 JavaScript 中使用 Liquid 变量
- jxbrowser - 如何为 JX 浏览器设置脚本超时
- c# - NAudio - 将任何 wav 文件格式转换为原始 PCM
- html - 为什么css文件不适用于html文件 - Django