我目前正在使用Beautiful Soup来解析一个超文本标记语言文件并调用get_text()
,但是似乎我被留下了很多表示空格的\xA0Unicode。在Python2.7中,有没有一种有效的方法将它们全部移除,并将它们改为空格?我想更普遍的问题应该是,有没有一种方法可以删除Unicode格式?
我尝试使用:line = line.replace(u'\xa0',' ')
,正如另一个线程所建议的那样,但它将\xA0改为u,所以现在到处都是“u”。):
编辑:这个问题似乎可以通过str.replace(u'\xa0', ' ').encode('utf-8')
来解决,但是如果只是在不使用replace()
的情况下执行.encode('utf-8')
,似乎会导致它输出更奇怪的字符,例如\xc2。有人能解释这个吗?
发布于 2012-07-20 01:42:45
\xa0实际上是Latin1 (ISO8859-1)中的不间断空格,也是chr(160)。您应该将其替换为空格。
string = string.replace(u'\xa0', u' ')
当.encode('utf-8')时,它会将unicode编码成utf-8,这意味着每个unicode可以用1到4个字节表示。在这种情况下,\xa0由2个字节\xc2\xa0表示。
阅读http://docs.python.org/howto/unicode.html上的内容。
请注意:这个答案从2012年开始,Python已经更新换代了,你现在应该可以使用unicodedata.normalize
了
发布于 2016-01-08 12:24:55
Python的unicodedata
库中有很多有用的东西。其中之一是.normalize()
函数。
尝试:
new_str = unicodedata.normalize("NFKD", unicode_str)
如果您没有得到您想要的结果,请使用上面链接中列出的任何其他方法替换NFKD。
发布于 2015-07-22 05:50:37
试着在行尾使用.strip() line.strip()
对我来说效果很好
https://stackoverflow.com/questions/10993612
复制相似问题