Python编码在读取时有问题,但在键入时没有

2024-09-27 19:25:52 发布

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

我正在从文本文件中读取一些字符串。 有些字符串有一些“奇怪”字符,例如“\xc3\xa9comiam”。 如果复制该字符串并将其粘贴到变量中,则可以将其转换为可读字符:

string = "\xc3\xa9comiam"
print(string.encode("raw_unicode_escape").decode('utf-8'))
écomiam

但如果我从文件里读到它,它就不起作用了:

with open(fn) as f:
       for string in f.readlines():
          print(string.encode("raw_unicode_escape").decode('utf-8'))
\xc3\xa9comiam

看来解决办法一定很简单,但我找不到。 我能做什么

谢谢


Tags: 字符串stringraw粘贴unicode字符utfencode
2条回答

谢谢大家的帮助

我想,我已经找到了一个解决方案(不是很优雅,但它确实起到了作用)

print(bytes(tm.strip(), "utf-8").decode("unicode_escape").encode("raw_unicode_escape").decode('utf-8'))

谢谢

那些不是unicode-escape的-顾名思义,它处理像\u00e9但不是\xe9这样的Unicode序列

你得到的是UTF-8编码序列。解码的方法是将其转换成bytes序列,然后将其解码为Unicode字符串

# Let's not shadow the string library
s = "\xc3\xa9comiam"
print(bytes(s, 'latin-1').decode('utf-8'))

'latin-1'技巧是一个肮脏的秘密,它只是将每个字节转换为具有相同字符代码的字符

对于您的文件,您可以以二进制模式打开它,这样您就不必显式地将它转换为bytes,或者您可以简单地对读取的字符串应用相同的转换

相关问题 更多 >

    热门问题