我有可以包含非ascii字符的输入和输出文本文件。有时我需要转义它们,有时我需要编写非ascii字符。基本上,如果我得到“Bürgerhaus”,我需要输出“B\u00FCrgerhaus”。如果我得到“B\u00FCrgerhaus”,我需要输出“Bürgerhaus”
一个方向很好:
>>> s1 = "B\u00FCrgerhaus"
>>> print(s1)
Bürgerhaus
但是,在另一个方向,我没有得到预期的结果('B\u00FCrgerhaus'):
>>> s2 = "Bürgerhaus"
>>> s2_trans = s2.encode('utf8').decode('unicode_escape')
>>> print(s2_trans)
Bürgerhaus
我读到unicode escape需要latin-1,我尝试将其编码为latin-1,但这也没有产生结果。我做错了什么
(PS:感谢Matthias提醒我,第一个示例中的转换是不必要的。)
你可以这样做:
输出:
说明:
我们将把每个字符转换为它对应的Unicode代码点
常规ASCII字符十进制值为<;128,更大的值,如欧元符号,德国货币。。。获取值>;=128(详细表here)
现在,我们将对所有字符进行“编码”>;=128及其相应的unicode表示形式
只能通过测试环(
bytes
)将decode()
转换为[unicode]字符串,反之,encode()
[unicode]字符串转换为bytes
因此,如果你想解码一个用
unicode-escape
转义的字符串,你需要首先将(encode()
)它转换成bytestring,例如,使用你在问题中写的latin1
另见:how do I .decode('string-escape') in Python3?
相关问题 更多 >
编程相关推荐