我正在解析一个HTML文件,并希望匹配两个字符序列之间的所有内容:Sent:
和<br>
标记。为什么我的正则表达式不适用于BeautifulSoup?
我见过几个非常相似的问题,并尝试了所有的方法,但都没有为我工作,可能是因为我是新手,并且做了一些非常简单的事情。
这里是我的相关代码:
for filename in os.listdir(path): #capture email year, month, day
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
with open(file_path, 'r') as f:
html = f.read()
soup = BeautifulSoup(html, 'html.parser')
a = re.findall(r'Sent:/.+?(?=<br>)/', soup.text)[0]
#a = re.findall(r'Sent:(.*)', soup.text)[0]
print(a)
d = parser.parse(a)
print("year:", d.year)
print("month:", d.month)
print("day:", d.day)
,我也试着为这些我正则表达式:a = re.findall(r'Sent:/^(.*?)<br>/', soup.text)[0]
和a = re.findall(r'Sent:/^[^<br>]*/', soup.text)[0]
但我不断收到错误list index out of range
....但即使我删除在[0]
我上线d = parser.parse(a)
错误AttributeError: 'list' object has no attribute 'read'
....只有[]
印刷作为print(a)
结果下面是HTML的相关版块:
<b>Sent:</b> Friday, June 14, 2013 12:07 PM<br><b>To:</b> David Leveille<br><b>Subject:</b>
哦,好吧,这很有道理,我打印出来,看到你在说什么关于,现在的事情是,我没有评论它下面的'd = parser.parse(a)'和'print()'语句,并且它们仍然失败,出现错误“ValueError:Unknown string format”一直困扰着我一段时间 – theprowler
公平地说,我不明白“parser.parse”是什么意思。什么是“解析器”?我知道一个名为“dateparser”的模块,但我无法安装它尝试。 –
那么我被告知导入'从dateutil导入解析器'....这种方式我使用RegEx来捕获'发送:'后的所有内容,然后'parser()'识别并捕获之后捕获的东西内的日期'发送:'......但是某些电子邮件发生了什么,特别是这个,没有'\ n'字符,因此RegEx被搞乱了......所以我注意到在HTML中有一个'
'在日期信息的末尾,所以我发布了这个问题....现在我发现我基本处于同样的窘境 – theprowler