如何在Python中的Unicode工作
-
09-09-2019 - |
题
我试图清理所有的HTML的一个字符串,这样最终输出是一个文本文件。我对各种“转换器”一些一些研究,我开始努力创造我自己的字典中的实体和符号,并运行一个替换字符串倾斜。我正在考虑这一点,因为我想这个过程自动化,并没有在底层的HTML的质量有很多可变性。要开始比较我的解决方案的速度,例如pyparsing我决定测试使用字符串替换方法\ XA0的替代方案之一。我获得
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
的代码的实际行为
s=unicodestring.replace('\xa0','')
反正-I决定,我需要与R键前言,所以我跑这行代码:
s=unicodestring.replace(r'\xa0','')
运行没有错误,但我当我看到S的片我看到\ XAO仍然存在。
解决方案
可以是自己应该做
s=unicodestring.replace(u'\xa0',u'')
其他提示
s=unicodestring.replace('\xa0','')
..试图创建Unicode字符\xa0
,这是无效的以ASCII sctring(在Python的缺省字符串类型直到版本3 x)
在r'\xa0'
原因没有错误是因为在原始字符串,转义序列没有效果。而不是试图编码\xa0
成Unicode字符,它看见字符串作为“反斜杠”,“文字x”和等等..
以下是相同的:
>>> r'\xa0'
'\\xa0'
>>> '\\xa0'
'\\xa0'
这是一些在Python V3解决,因为默认的字符串类型是unicode的,所以你可以做..
>>> '\xa0'
'\xa0'
我试图清理所有的HTML的一个字符串,这样最终输出是一个文本文件
我会强烈建议 BeautifulSoup 这一点。编写一个HTML清洁工具是困难的(考虑到大多数HTML是多么的可怕),和BeautifulSoup做了伟大的工作,在两个解析HTML,以及处理Unicode的..
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<html><body><h1>Hi</h1></body></html>")
>>> print soup.prettify()
<html>
<body>
<h1>
Hi
</h1>
</body>
</html>
看那编解码器标准库,特别是在编码强>和解码在编解码器的基类提供了有力>方法
代替此,最好使用标准的Python特性。
例如:
string = unicode('Hello, \xa0World', 'utf-8', 'replace')
或
string = unicode('Hello, \xa0World', 'utf-8', 'ignore')
其中replace
将取代\xa0
到\\xa0
。
但如果\xa0
真的是没有意义的你,你要删除它,然后用ignore
。
有关HTML清洁刚一说明。这是非常非常困难的,因为
<
body
>
是写HTML的一种有效方式。只是一个供参考。
您可以将它以这种方式为Unicode:
print u'Hello, \xa0World' # print Hello, World