带有unicode代码的文本在Python 3.7中未正确显示

2024-10-01 04:52:54 发布

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

在花了好几个小时检查了每一篇与此相关的stackoverflow帖子之后,我正在绞尽脑汁解决一件非常简单的事情

我有一个带有unicode代码(不是字符、代码)的文本文件,例如:

"Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito"

此字符串应显示为:

"Edward escribió la biografía de su autor favorito"

如果像平常一样加载文件,则在打印加载的文本时,只会看到unicode字符串:

import io
chars = io.open(fb_json_path, encoding='utf-8').read().strip()

上面印着:“Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito”。如果我删除编码参数也是一样的

我想我需要告诉Python解释字符串中的代码并将它们显示为utf-8字符,但我不知道如何做到这一点

提前谢谢


Tags: 字符串代码unicodede字符lasuedward
2条回答

我们可以通过两个步骤来实现这一点:

首先,我们使用encoding='unicode_escape'读取文件以转换所有的\uxxxx

然后,我们通过将其透明地编码为bytes对象(使用latin-1编解码器)将其转换为utf-8,并再次将其转换为文本,解码为utf-8

with open('text.txt', encoding='unicode-escape') as f:
    text = f.read()
    print(text)
    #Edward escribió la biografía de su autor favorito

    # Now we convert it to utf-8
    text = text.encode('latin1').decode('utf8')
    print(text)
    # Edward escribió la biografía de su autor favorito

我相信输入是由于编码错误造成的

C3 93óLATIN CAPITAL LETTER O WITH ACUTE)的UTF-8编码字节

在Python3控制台中运行

>>> text = "Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito"
>>> text.encode('cp1252').decode('utf8')
'Edward escribió la biografía de su autor favorito'

相关问题 更多 >