如何使用Python返回文本文件中最新字段的行?

问题描述

我正在编写一个 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]