如何正确打印带有unicode转义字符的字符串

2024-09-28 01:33:24 发布

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

我正在从包含嵌入式unicode转义序列的文件中读取字符串, \u00e9作为示例。 当我使用print()打印文字字符串时,编码通过打印转换为正确的字符,但是如果我从stdin获取字符串并打印出来,print不会将转义序列转换为unicode字符

例如,当我使用:

print ("Le Condamn\u00e9 \u00e0 mort") 

python正确地打印Le Condamné à mort 但是,如果我从stdin得到相同的字符串,我得到:Le Condamn\u00e9 \u00e0 mort

有人知道如何让python将转义序列转换为正确的unicode字符吗?另外,当您为print指定字符串文字而不是字符串变量时,为什么它的行为会有所不同


Tags: 文件字符串le示例编码stdinunicode字符
2条回答

我相信您正在寻找str.encode(“字符串转义”)函数

示例代码

s = "Le Condamn\u00e9 \u00e0 mor"
ra=s.encode('unicode_escape').decode()
print(ra)

输出

Le Condamn\xe9 \xe0 mor

the image contains the code snippet with output

\u00e0被存储为python的Unicode数字,以便将其打印为“a”。当您从另一个文件获取它时,它完全是字符串形式的,这意味着它随后存储为'\\u00e0',其中每个字符都是字符串。 解决这个问题的方法是确定'\\u00e0'在列表中的位置,然后用'\u00e0'替换它

下面是一些代码,可以将字符串中的'\\u00e0'转换为它应该是的字符

def special_char_fix(string):
    string = list(string)
    for pl, char in enumerate(string):
        if char == '\\':
            val = ''.join([string[pl + k + 2] for k in range(4)])
            for k in range(5):
                string.pop(pl)
            string[pl] = str(chr(int(val, 16)))
    return ''.join(string)

相关问题 更多 >

    热门问题