首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的regex不适用于BeautifulSoup?

为什么我的regex不适用于BeautifulSoup?
EN

Stack Overflow用户
提问于 2017-02-16 17:20:22
回答 4查看 174关注 0票数 0

我正在解析一个HTML文件,并希望匹配两个字符序列之间的所有内容:Sent:<br>标记。

我见过几个非常相似的问题,并尝试了他们的所有方法,但没有一个对我有用,可能是因为我是个新手,做一些非常简单的事情是错误的。

以下是我的相关代码:

代码语言:javascript
运行
复制
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的相关块:

代码语言:javascript
运行
复制
<b>Sent:</b> Friday, June 14, 2013 12:07 PM<br><b>To:</b> David Leveille<br><b>Subject:</b> 
EN

Stack Overflow用户

发布于 2017-02-16 18:02:43

你不需要普通的斜杠逃跑:

代码语言:javascript
运行
复制
a = re.findall(r"Sent:(.*?)<br>", soup.text)[0]

话虽如此,在尝试从输出中获取值之前,您可能应该检查输出(或者至少使用try/ get )。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42280699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档