如何摆脱像 ' 这样出现而不是撇号的字符? [复制]

Posted

技术标签:

【中文标题】如何摆脱像 \' 这样出现而不是撇号的字符? [复制]【英文标题】:How do I get rid of characters like ' that appear instead of apostrophes? [duplicate]如何摆脱像 ' 这样出现而不是撇号的字符? [复制] 【发布时间】:2012-01-26 07:59:19 【问题描述】:

可能重复:Convert XML/html Entities into Unicode String in Python

我正在尝试使用 Python 抓取网站。我导入并使用了 urllib2、BeautifulSoup 和 re 模块。

response = urllib2.urlopen(url)
soup = BeautifulSoup(response)
responseString = str(soup)

coarseExpression = re.compile('<div class="sodatext">[\n]*.*[\n]*</div>')
coarseResult = coarseExpression.findall(responseString)

fineExpression = re.compile('<[^>]*>')
fineResult = []

for coarse in coarseResult:
    fine = fineExpression.sub('', coarse) 
    #print(fine)
    fineResult.append(fine)

不幸的是,像撇号这样的字符以这样的损坏方式出现 - ' ; 有没有办法避免这种情况?或者有什么方法可以轻松替换它们?

【问题讨论】:

这没有损坏,它是用于撇号 (en.wikipedia.org/wiki/…) 的 HTML/XML 字符实体。您总是可以将这些实体解码回它们的 ASCII 等价物。 (***.com/questions/57708/…) 你正在 BeautifulSoup 中加载一个页面只是为了对其进行正则表达式!? 你为什么要做这种可怕的事情?! @FrancisAvila,我仍在摸索 Python。你能告诉我一个更好的方法吗? 使用 BeautifulSoup 搜索或遍历 HTML 树并获得所需的内容。这就是为什么它首先存在!阅读 BeautifulSoup 文档。 打开一个新问题,将您作为一个整体尝试做的事情。我怀疑您会执着于使用正则表达式,而实际上这正是完成任务的错误工具。 【参考方案1】:

以下关于实体转换的 BeautifulSoup 文档应该是您正在寻找的:

http://www.crummy.com/software/BeautifulSoup/documentation.html#Entity%20Conversion

【讨论】:

只是指出 BS 无法解码十六进制编码实体 (&amp;#x27;),但它适用于十进制编码实体 (&amp;#39;)。因此,OP 需要事先对其进行转换。 @Avaris 这听起来像是 BS,TBH 中的错误,或者至少是缺少的功能。

以上是关于如何摆脱像 ' 这样出现而不是撇号的字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在REGEX中选择引号但不是撇号

忽略正则表达式中的撇号[重复]

反序列化包含引号和撇号的 JSON 字符串

在 Python 语言中从列表元素中删除撇号

如何在 PHP 中去除特殊的引号字符?

在 Apps 脚本中对带有撇号的位置进行地理编码会出现“不允许操作”错误