24062015的RegEx模式是什么10:15:45:Aditya Krishnakant:?

2024-04-25 09:03:55 发布

您现在位置:Python中文网/ 问答频道 /正文

24-06-2015 10:15:45: Aditya Krishnakant:的正则表达式模式是什么

如果你看一下whatsapp聊天记录,它看起来像是一团糟。这段代码的目的是在新行中打印一个人发送的消息(为了更好的可读性)。这是我的密码

import re

f = open("wa_chat.txt", "r")
match = re.findall(r'(\d{2})\:(\d{2})\:(\d{4})\s(\d{2})\:(\d{2})\:(\d{2})\:\s(\w)\s(\w)\:', f)
for content in match:
      print(f.readlines(), '\n')
f.close()

我收到以下错误消息:

Traceback (most recent call last): 
  File "whatsapp.py", line 4, in <module>
   match = re.findall(r'(\d{2})\:(\d{2})\:(\d{4})\s(\d{2})\:(\d{2})\:(\d{2})\:\s(\w)\s(\w)\:', f)
  File "/usr/lib/python2.7/re.py", line 177, in findall
   return_compile(pattern, flags).findall(string)
TypeError: expected string or buffer

我哪里出错了?你知道吗


Tags: 代码inpy目的re消息stringmatch
1条回答
网友
1楼 · 发布于 2024-04-25 09:03:55

出于某种原因,你把\:放在-应该放的地方。此外,您可以更具体地使用空格来代替\s。你可以更具体地处理这类事情,因为你确切地知道格式是什么。你的另一个大问题是你只使用\w,它只匹配一个字母数字字符,而你应该使用\w+,匹配整个单词。最后,您实际的错误来自这样一个事实:您传入的是一个file对象,而不是包含其内容的字符串,即f.read()。以下是一些应该有效的代码:

import re

f = open("wa_chat.txt", 'r')
match = re.findall(r'(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2}):(\d{2}): (\w+) (\w+):', f.read())
print match #or do whatever you want with it

请注意,match将是元组列表,因为您希望使用分组。你知道吗

相关问题 更多 >

    热门问题