首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >漂亮的Soup get_text()正则表达式输出

漂亮的Soup get_text()正则表达式输出
EN

Stack Overflow用户
提问于 2014-01-05 00:29:25
回答 1查看 743关注 0票数 0

我正试图从一个网页中提取一些信息。我使用美汤的get_text方法获取文本,但是当我试图通过正则表达式传递该文本时,不会返回任何内容。

代码语言:javascript
复制
import urllib2
from bs4 import BeautifulSoup
import re

url = "http://www.somesite.com"
page = BeautifulSoup(urllib2.urlopen(url))
info = {}
info['description'] = page.get_text()
print info['description'] #this works fine
print re.match(r'.',info['description'],re.UNICODE).group()

什么都不回。

EN

回答 1

Stack Overflow用户

发布于 2014-01-05 01:41:22

好的,这可能是正在发生的事情(但是我还没有检查是否真的是这样,因为我的机器上没有Python 2,无法在Python 3中复制它)。如果您查看re.match的docs,您会发现它是这样的:

re.match(模式,字符串,flags=0) 如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。如果字符串与模式不匹配,则返回None;注意,这与零长度匹配不同。

要点:re.match只在字符串的开头匹配。

接下来,点字符.

'.' (点)在默认模式下,这将匹配除换行符以外的任何字符。如果指定了DOTALL标志,这将匹配包括换行符在内的任何字符。

因此,.不匹配换行符。这就是问题所在--如果info['description']以换行符开头,您将得不到匹配。

您应该做的是使用re.search或将re.DOTALL标志传递给re.match

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20928526

复制
相关文章

相似问题

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