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
我哪里出错了?你知道吗
出于某种原因,你把
\:
放在-
应该放的地方。此外,您可以更具体地使用空格来代替\s
。你可以更具体地处理这类事情,因为你确切地知道格式是什么。你的另一个大问题是你只使用\w
,它只匹配一个字母数字字符,而你应该使用\w+
,匹配整个单词。最后,您实际的错误来自这样一个事实:您传入的是一个file对象,而不是包含其内容的字符串,即f.read()
。以下是一些应该有效的代码:请注意,
match
将是元组列表,因为您希望使用分组。你知道吗相关问题 更多 >
编程相关推荐