python - 使用正则表达式解析 Whatsapp 聊天日志
问题描述
我正在尝试使用正则表达式解析 WhatsApp 聊天日志。我有一个适用于大多数情况的解决方案,但我正在寻求改进它但不知道如何改进,因为我对正则表达式很陌生。
该chat.txt
文件如下所示:
[06.12.16, 16:46:19] Person One: Wow thats amazing
[06.12.16, 16:47:13] Person Two: Good morning and this goes over multiple
lines as it is a very long message
[06.12.16, 16:47:22] Person Two: ::
虽然到目前为止我的解决方案可以正确解析大多数这些消息,但是我有几百个消息以冒号开头的情况,就像上面的最后一个示例一样。这导致Person Two: :
作为发送者的不想要的值。
这是我目前正在使用的正则表达式:
pattern = re.compile(r'\[(?P<date>\d{2}\.\d{2}\.\d{2}),\s(?P<time>\d{2}:\d{2}:\d{2})]\s(?P<sender>(?<=\s).*(?::\s*\w+)*(?=:)):\s(?P<message>(?:.+|\n+(?!\[\d{2}\.\d{2}\.\d{2}))+)')
任何有关如何解决此错误的建议将不胜感激!
解决方案
在应用正则表达式之前,我会预处理列表以删除连续的冒号。所以对于每一行,例如
line = [06.12.16, 16:47:22] Person Two: ::
line = line.replace("::","")
这将给:
[06.12.16, 16:47:22] Person Two:
然后,您可以在预处理数据上调用您的正则表达式函数。
推荐阅读
- google-apps-script - 使用 Apps 脚本合并富文本邮件
- sql - 如何在 SQL FUNCTION 中向 RETURN 添加条件?
- angular - 无法将数据发送到后端
- angular - 是否可以在 Angular 中更改视图/ HTML 中的模型变量值?
- c# - 实体框架的“使用”关键字与类字段
- wkhtmltopdf - 将带有 css 类和背景图像的富 html 转换为 PDF
- ansible - hash_vault 将变量/参数传递到查找查询中
- java - 最新版本的 Java SDK 未显示在 Windows 命令提示符上
- oracle - ORA-00922: 尝试 CREATE TABLE 时出现“缺少或无效选项”
- c# - 将目标从 netcoreapp3.0 更改为 netstandard2.1 时缺少 TableAttribute