为了账号安全,请及时绑定邮箱和手机立即绑定

解析WhatsApp消息:如何解析多行文本

解析WhatsApp消息:如何解析多行文本

动漫人物 2021-05-04 17:18:51
我有一个要保存为csv格式的WhatsApp消息文件。文件看起来像这样:[04/02/2018,20:56:55] Name1:此聊天消息和通话现在已通过端到端加密进行保护。[04/02/2018,20:56:55]名称1:Content1。更多内容。[04/02/2018,23:24:44] Name2:Content2。我想将邮件解析为date, sender, text列。我的代码:with open('chat.txt', "r") as infile, open("Output.txt", "w") as outfile:    for line in infile:        date = datetime.strptime(            re.search('(?<=\[)[^]]+(?=\])', line).group(),             '%d/%m/%Y, %H:%M:%S')        sender = re.search('(?<=\] )[^]]+(?=\:)', line).group()        text = line.rsplit(']', 1)[-1].rsplit(': ', 1)[-1]        new_line = str(date) + ',' + sender + ',' + text        outfile.write(new_line)我在处理多行文本时遇到问题。(有时我会在消息中跳入新行-在这种情况下,该行中只有文本,应该是上一行的一部分。)我也对解析日期时间,发件人,和文字。我的代码的结果是错误的,因为每一行都没有所有条件(但正确地解析了日期,发件人,文本):---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-33-efbcb430243d> in <module>()      3     for line in infile:      4         date = datetime.strptime(----> 5             re.search('(?<=\[)[^]]+(?=\])', line).group(),      6             '%d/%m/%Y, %H:%M:%S')      7         sender = re.search('(?<=\] )[^]]+(?=\:)', line).group()AttributeError: 'NoneType' object has no attribute 'group'想法:也许使用try-catch,然后以某种方式仅在文本后附加行?(听起来不像Pythonic。)
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信