问题描述
我正在编写一个 Python 脚本。我需要从文本文件中返回包含最新 'timestamp': 字段的行。例如,在下面的文本文件示例中:
{'uid': 3167,'user_id': '6','timestamp': datetime.datetime(2021,3,10,18,7,13),'status': 1,'punch': 1},{'uid': 3168,'user_id': '198',42),'status': 2,{'uid': 3169,'user_id': '3',13,53),{'uid': 3170,'user_id': '13',22,2),{'uid': 3171,'user_id': '9',43),{'uid': 3172,'user_id': '15',32,30),{'uid': 3173,'user_id': '4',19,42,26),{'uid': 3174,'user_id': '1',34),{'uid': 3175,11,8,48,6),{'uid': 3176,'user_id': '7',9,2,{'uid': 3177,'user_id': '5',12,40),{'uid': 3178,40,47),{'uid': 3179,49,59),
返回文本文件“今天的日期 11/3/2021”例如:
{'uid': 3175,
解决方法
看来您正在处理表格数据,而 Pandas 对此很自然。
import datetime
import pandas as pd
df = pd.DataFrame([{'uid': 3167,'user_id': '6','timestamp': datetime.datetime(2021,3,10,18,7,13),'status': 1,'punch': 1},{'uid': 3168,'user_id': '198',42),'status': 2,{'uid': 3169,'user_id': '3',13,53),{'uid': 3170,'user_id': '13',22,2),{'uid': 3171,'user_id': '9',43),{'uid': 3172,'user_id': '15',32,30),{'uid': 3173,'user_id': '4',19,42,26),{'uid': 3174,'user_id': '1',34),{'uid': 3175,11,8,48,6),{'uid': 3176,'user_id': '7',9,2,{'uid': 3177,'user_id': '5',12,40),{'uid': 3178,40,47),{'uid': 3179,49,59),])
today = pd.to_datetime('today').normalize()
rows = df[df['timestamp'] >= today]
哪个给了
uid user_id timestamp status punch
8 3175 3 2021-03-11 08:48:06 1 1
9 3176 7 2021-03-11 09:02:30 2 1
10 3177 5 2021-03-11 09:12:40 1 1
11 3178 6 2021-03-11 09:40:47 1 1
12 3179 15 2021-03-11 09:49:59 2 1
如果你想在字典列表中得到结果,你可以执行 rows.to_dict('records')
。
如果没有 Pandas,获取今天的日期时间并迭代数据以过滤它们的方法类似。
lines = [{'uid': 3167,]
today = datetime.date.today()
today = datetime.datetime(today.year,today.month,today.day)
result = [line for line in lines if line['timestamp'] >= today]