【发布时间】:2021-04-13 13:14:07
【问题描述】:
我有可以包含非 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,我尝试将其编码为它,但这也没有产生结果。我做错了什么?
(PS:感谢 Matthias 提醒我第一个示例中的转换是不必要的。)
【问题讨论】:
-
您的第一个示例将字符串转换为 UTF-8,然后将其转换回 unicode。当然结果是一样的。试试
print(s1),你会得到Bürgerhaus。 -
@Matthias 我认为 OP 试图实现的是将他的字符串与 unicode char 转换为字符串表示形式,然后将其转换回来。即回到带有点代码的原始表示
-
我现在也很好奇如何给定一个字符串
Bürgerhaus你可以让python打印你的unicode转义版本B\u00FCrgerhaus -
这看起来很像 JSON 编码字符串的方式。你确定你真的不应该使用
json库,而不是依赖脆弱的转义操作吗?