首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RoboBrowser/BeautifulSoup返回多个匹配

RoboBrowser/BeautifulSoup返回多个匹配
EN

Stack Overflow用户
提问于 2017-05-30 21:52:41
回答 1查看 318关注 0票数 1

我试图使用find/find_all-方法获得多个regex匹配,但无法使其工作。

HTML代码的一部分可以是这样的:

代码语言:javascript
复制
<b>Week</b> 22: 3871983

然后,在代码中,我尝试以下几点:

代码语言:javascript
复制
import re
from robobrowser import RoboBrowser

browser = RoboBrowser(parser='html.parser')
browser.open(some_url_containing_the_above_html_code)
result = browser.find_all(text=re.compile('Week\s+(\d+).*?(\d+)'))

print(result)

它输出的内容如下:

代码语言:javascript
复制
['Week 22:\xa3871983']

我期待着这样的事情:

代码语言:javascript
复制
['22', '3871983']

\xa毁了它吗?还是不能在一个正则表达式中返回多个匹配?我真的不知道怎么解决。我总是可以将返回值存储在字符串中,然后再用拆分或regex解析它一次,但是我更希望直接使用find或find_all来获得它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-30 22:31:34

find_all函数的误解。所有这些都会返回与给定条件匹配的元素列表。在你的情况下,这是一种判决。你的regex有子模式。但这与此并无实际关系。find_all不会被正则表达式拆分。所以

代码语言:javascript
复制
['Week 22:\xa3871983']

是预期的结果。如果你想把它转换成'22','3871983‘

代码语言:javascript
复制
 import re
 for result in results:
     parts = re.split("\s", result)
     parts[0] = parts[0][4:]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44272567

复制
相关文章

相似问题

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