我把这个文本放在一个文件中- Recuérdame (注意它是一个法语单词)。当我用python脚本读取这个文件时,我将这个文本作为Recuérdame.
我把它读成了unicode字符串。我是否需要找到文本的编码并对其进行解码?还是我的终端机在捉弄我?
发布于 2010-12-16 06:38:23
是的,您需要知道将文本文件转换为unicode字符串的编码方式(来自组成该文件的字节)。
例如,如果您知道编码是UTF-8:
with open('foo.txt', 'rb') as f:
contents = f.read().decode('utf-8-sig') # -sig takes care of BOM if present但是,文件中的文本似乎不是编码的Unicode;重音字符显然是作为一个XML实体存储的,它必须是converted manually (链接对jleedev的提示)。
发布于 2010-12-16 06:46:35
它不是Unicode字符串。它是一个字符串,不管它是用什么编码的。因此,它是一个UTF-8或拉丁-1或其他什么字符串。在本例中,é是一个具体表示é的HTML实体。它是HTML和XML中用来编码非ascii数据的编码。
要将其解码为Unicode,请查看Fredrik方法:http://effbot.org/zone/re-sub.htm#unescape-html
发布于 2010-12-16 06:46:07
它是HTML,这个构造被称为“实体”。您可以使用
def entity_decode(match):
_, is_hex, entity = match.groups()
base = 16 if is_hex else 10
return unichr(int(entity, base))
print re.sub("(?i)(&#(x?)([^;]+);)",
entity_decode,
"Recurdame")破译所有的礼仪。
编辑:是的,它们当然不是latin1,现在它应该与所有实体一起工作。
https://stackoverflow.com/questions/4458090
复制相似问题