【发布时间】:2010-10-19 16:11:38
【问题描述】:
我正在尝试从字符串中清除所有 HTML,以便最终输出为文本文件。我对各种“转换器”进行了一些研究,并开始倾向于为实体和符号创建自己的字典并在字符串上运行替换。我正在考虑这一点,因为我想自动化这个过程,并且底层 html 的质量存在很多可变性。为了开始比较我的解决方案和替代方案之一(例如 pyparsing)的速度,我决定使用字符串方法 replace 测试 \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 的一部分时,我发现 \xaO 仍然存在
【问题讨论】:
-
为什么要在 '\xa0' 前面加上一个 r?这使它成为一个原始字符串 - 也就是说,它实际上包含反斜杠、x、a、0。没有 r,它包含一个带有十六进制代码 a0 的单个字符,我认为这就是你想要的。
-
因为我试图猜测为什么会出现错误,而且我知道有时要强制读取 \,您必须将其设为字符串文字,并且 \xa0 是我的实际存在的资源。什么是十六进制代码 a0?
标签: python string unicode replace unicode-string