【发布时间】:2017-02-16 17:20:22
【问题描述】:
我正在解析一个 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] 我在行 AttributeError: 'list' object has no attribute 'read' 上收到错误 d = parser.parse(a)...。只有 [] 打印为print(a)的结果
这是相关的 HTML 块:
<b>Sent:</b> Friday, June 14, 2013 12:07 PM<br><b>To:</b> David Leveille<br><b>Subject:</b>
【问题讨论】:
标签: python html regex beautifulsoup