Python文本编码

2024-10-01 15:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文件中有这段文字-reciérdame(注意这是一个法语单词)。当我用python脚本阅读这个文件时,得到的文本是Recuérdame。在

我把它当作unicode字符串读。我是否需要找到文本的编码和解码?还是我的终端在耍我?在


Tags: 文件字符串文本脚本终端编码unicode解码
3条回答

它是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")

解码所有的信息。在

编辑:是的,它们当然不是拉丁语,现在它应该可以与所有实体一起工作了

它是一个Unicode字符串。不管用什么编码,它都是一个字符串。因此它是UTF-8或拉丁语-1或其他字符串。在本例中,&#xE9是一个表示é的HTML/XML实体。它是HTML和XML中用于编码非ascii数据的编码。在

要将其解码为Unicode,请看Fredrik Lundhs方法:http://effbot.org/zone/re-sub.htm#unescape-html

是的,您需要知道文本文件的编码才能转换成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提供链接的提示)。在

相关问题 更多 >

    热门问题