【发布时间】:2019-04-30 16:42:41
【问题描述】:
就我而言,我想专门从字符串中删除 „ 和 ” 字符。我使用 BeautifulSoup 来解析某些 html 段落,并从中获取子字符串。到目前为止,我的代码如下所示:
# -*- coding: cp1252 -*-
from bs4 import BeautifulSoup as bs
import re
soup = bs(open("file.xhtml"), 'html.parser')
for tag in soup.find_all('p', {"class": "fnp2"}) :
line = unicode(str(tag).split(':')[0], "utf-8")
line = re.sub('(<p class="fnp2">)(\d+) ', '', line)
line = line.replace('„', '')
print line
但为此,我总是收到UnicodeDecodeError:
line = line.replace('„', '')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x84 in position
0: ordinal not in range(128)
对此有什么解决方案?
【问题讨论】:
-
您的 .xhtml 是否指定了编码?
-
尝试将有问题的行更改为 line.replace(u'„', '')。但是,您也可能在“打印”语句中遇到错误。最后,确保您的脚本文件实际上保存在 cp1252 中(或者更好的是,始终对所有代码使用 UTF8,并将其标记在标题中)。
-
你试过
open("file.xhtml", encoding='utf-8')吗? -
@lit 是的:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -
@KT。谢谢你。似乎
line.replace(u'„', '')是答案。除了在文件开头写# -*- coding: cp1252 -*-之外,如何确保脚本文件保存在cp1252中? @lit 和 @TigerhawkT3 谢谢你的建议。
标签: python python-2.7 beautifulsoup