繁体   English   中英

读取时Python编码问题,但键入时不编码

[英]Python encoding problem when reading but not when typing

我正在从文本文件中读取一些字符串。 其中一些字符串有一些“奇怪”的字符,例如“\\ 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

似乎解决方案必须非常简单,但我找不到它。 我能做什么?

谢谢!

那些不是unicode-escape那些 - 就像名字所暗示的那样,处理Unicode序列,如而不是\\xe9

你拥有的是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 ,或者您可以简单地将相同的转换应用于您阅读的字符串。

谢谢大家的帮助,

我想,我已经找到了一个解决方案(不是很优雅,但确实如此)。

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

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM