我正在解析一个HTML文件,并希望匹配两个字符序列之间的所有内容:Sent:和<br>标记。
我见过几个非常相似的问题,并尝试了他们的所有方法,但没有一个对我有用,可能是因为我是个新手,做一些非常简单的事情是错误的。
以下是我的相关代码:
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)我还为我的RegEx: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> 发布于 2017-02-16 18:02:43
你不需要普通的斜杠逃跑:
a = re.findall(r"Sent:(.*?)<br>", soup.text)[0]话虽如此,在尝试从输出中获取值之前,您可能应该检查输出(或者至少使用try/ get )。
https://stackoverflow.com/questions/42280699
复制相似问题