我正在尝试清除字符串中的所有HTML,以便最终输出为文本文件。我对各种“转换器”进行了一些研究,开始倾向于为实体和符号创建自己的字典,并对字符串运行替换。我之所以考虑这一点,是因为我希望自动化这个过程,而且底层html的质量有很多变化。为了开始比较我的解决方案和其中一个备选方案(例如pyparsing)的速度,我决定使用字符串方法replace测试replace of\xa0。我得到一个
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
实际的代码行是
s=unicodestring.replace('\xa0','')
总之,我决定在它前面加上一个r,所以我运行了这行代码:
s=unicodestring.replace(r'\xa0','')
它运行没有错误,但是当我看到一片s时,我看到它仍然存在
也许你应该这样做
…正在尝试创建unicode字符
\xa0
,该字符在ASCII字符串中无效(Python中的默认字符串类型,直到版本3.x)之所以
r'\xa0'
没有错误,是因为在原始字符串中,转义序列没有效果。它并没有试图将\xa0
编码为unicode字符,而是将字符串视为“文字反斜杠”、“文字x”等。。以下内容相同:
这是Python v3中解决的问题,因为默认的字符串类型是unicode,所以您只需执行。。
对此我强烈建议BeautifulSoup。编写一个HTML清理工具是困难的(考虑到大多数HTML是多么糟糕),BeautifulSoup在解析HTML和处理Unicode方面都做得很好。。
查看codecs标准库,特别是Codec基类中提供的encode和decode方法。
还有一篇很好的文章here把这一切放在一起。
相关问题 更多 >
编程相关推荐