Python中的Unicode转换:如何将两组类Unicode内容转换为指定格式?
在Python中转换类似Unicode内容的几种常用方法
嘿,这个问题我刚好处理过不少,得先明确你说的“类似Unicode的内容”具体是啥样的——不过常见的情况无非几种,我给你列最常用的处理方式,你对着自己的场景挑就行:
1. 转义Unicode字符串(比如\uXXXX格式)转实际字符
如果你的输入是带转义符的字符串(比如r"\u4F60\u597D"),想要转成对应的实际Unicode字符,有两种靠谱的方法:
方法1:用encode+decode组合
escaped_str = r"\u4F60\u597D" # 先转成字节,再用unicode_escape解码 actual_characters = escaped_str.encode('utf-8').decode('unicode_escape') print(actual_characters) # 输出:你好
方法2:用ast.literal_eval(更安全,适合复杂场景)
如果你的字符串里还有其他特殊字符,用这个方法不容易出问题:
import ast escaped_str = r"\u4F60\u597D" # 把字符串包装成字符串字面量,再解析 actual_characters = ast.literal_eval(f'"{escaped_str}"') print(actual_characters) # 输出:你好
2. 码点数值转Unicode字符
如果你的内容是十六进制码点(比如字符串"4F60 597D")或者整数码点列表(比如[0x4F60, 0x597D]),可以用chr()函数逐个转换:
十六进制字符串转字符
hex_code_str = "4F60 597D" # 拆分字符串,逐个转成整数再转字符 actual_characters = ''.join(chr(int(code, 16)) for code in hex_code_str.split()) print(actual_characters) # 输出:你好
整数码点列表转字符
code_points = [0x4F60, 0x597D] actual_characters = ''.join(chr(code) for code in code_points) print(actual_characters) # 输出:你好
3. 反向转换:实际Unicode字符转成转义/码点格式
如果是要把实际字符转成你说的“类似Unicode的内容”,也很简单:
转成\uXXXX转义字符串
original_str = "你好" escaped_str = original_str.encode('unicode_escape').decode('utf-8') print(escaped_str) # 输出:\u4f60\u597d
转成十六进制码点字符串
original_str = "你好" hex_codes = ' '.join(f'{ord(char):X}' for char in original_str) print(hex_codes) # 输出:4F60 597D
如果你的“类似Unicode内容”是其他特殊格式(比如UTF-16字节序列、其他编码的Unicode表示),可以把具体样例贴出来,我再帮你调整方案~
内容的提问来源于stack exchange,提问作者CyberCube
相关产品推荐
相关产品推荐

