Python如何将字符串转为Unicode转义格式及实现对应反向转换?
实现方案
正向转换(普通字符串/带\x转义的字符串转\u格式Unicode转义字符串)
Python 3 中"Città"和"Citt\xe0"本身是完全等价的字符串,二者底层存储没有任何区别,\xe0只是同一个字符的简写转义表示。
你可以通过自定义函数遍历字符串的每个字符,对非ASCII字符格式化为\uXXXX的形式即可:
def str_to_unicode_escape(input_str: str) -> str: output = [] for c in input_str: # ASCII范围内的字符直接保留,非ASCII转成\uXXXX格式 if ord(c) < 128: output.append(c) else: output.append(f"\\u{ord(c):04X}") return ''.join(output) # 测试用例 print(str_to_unicode_escape("Città")) # 输出:Citt\u00E0 print(str_to_unicode_escape("Citt\xe0")) # 输出:Citt\u00E0
转换后的结果是纯ASCII字符串,可以直接写入任意文本文件。
反向转换(\u格式Unicode转义字符串转回普通字符串)
直接使用Python内置的unicode_escape编解码规则即可实现:
def unicode_escape_to_str(input_str: str) -> str: return input_str.encode("utf-8").decode("unicode_escape") # 测试用例 print(unicode_escape_to_str("Citt\\u00E0")) # 输出:Città
内容的提问来源于stack exchange,提问作者Marco Dell'Acqua
相关产品推荐
相关产品推荐

