gpt4 book ai didi

python - 使用 RegExp 拆分 Telegram 消息

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:50 24 4
gpt4 key购买 nike

我有一个文件保存了 Telegram 上提取的消息。每条消息都以日期、时间、用户名和他/她发送的消息开头:

08.04.2018 15:50:14, Vlada: Ey, hello there.

hows it going?
Everything fine?

08.04.2018 15:53:30, Other: Meh
could have been better.

08.04.2018 15:55:20, Vlada: ok

现在,我想将这个大字符串(来自一个文件)拆分成子字符串,这些子字符串将被插入到 python 列表中,这样列表的每个条目都将是包含日期、时间和用户名的消息,存储在列表中。像这样:

list = [
'08.04.2018 15:50:14, Vlada: Ey, hello there.\n\nhows it going?\nEverything fine?\n',
'08.04.2018 15:53:30, Other: Meh\ncould have been better.\n',
'08.04.2018 15:55:20, Vlada: ok'
]

稍后我将对这些字符串执行一些额外的逻辑,但首先我必须以这种方式对它们进行排序。

我的尝试

我开始在日志的开头搜索日期模式,由此,我包含了所有带有任何字符的换行符,我想要所有这些,直到我找到另一个日期模式。

/(\n\d{2}\.\d{2}\.\d{4})(?s)(.*)(?=(\n\d{2}\.\d{2}\.\d{4}))/g

我挣扎的是使用 reg 表达式“如何循环那些元素”以实现我上面提到的结果的能力,并且使用我想出的方法,它不包括最后一条消息完全没有。

我想尝试的另一件事是找到第一条消息的开始和结束,将一个字符串插入列表,然后从文件中删除整个字符串,但我觉得这不是很好的方法这样做。

我使用 Python 2.7、Windows 10。

最佳答案

一种更简单的方法,它给出了所需的结果:

import re

result = []
for i in data.split('\n') : # data -- is your original text
if re.search( r'^\d\d\.\d\d\.\d\d\d\d', i) is None :
result[-1] += '\n' + i
else :
result.append(i)

假设data有你的原文,结果:

[
"08.04.2018 15:50:14, Vlada: Ey, hello there.\n\nhows it going?\nEverything fine?\n",
"08.04.2018 15:53:30, Other: Meh\ncould have been better.\n",
"08.04.2018 15:55:20, Vlada: ok"
]

关于python - 使用 RegExp 拆分 Telegram 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com