Python:如何将Unicode编码的二进制变量字符串转为Unicode字符
方法1:用ast.literal_eval(最简便安全)
Python的ast模块提供的literal_eval可以安全解析Python字面量,包括bytes对象。直接将输入的字符串传入该函数,就能得到对应的bytes对象,再解码为Unicode字符即可:
import ast while True: input_str = input("Enter binary Unicode string or 'exit' to exit: ") if input_str == 'exit': break try: byte_data = ast.literal_eval(input_str) print(byte_data.decode('utf-8')) except Exception as e: print(f"Error: {e}")
测试输入b'\xe1\x80\xad',就能输出对应的缅甸语字符ိ。
方法2:手动处理字符串(无需额外模块)
如果不想引入ast模块,可以手动剥离字符串的b'前缀和'后缀,提取纯十六进制部分后转换:
while True: input_str = input("Enter binary Unicode string or 'exit' to exit: ") if input_str == 'exit': break # 校验输入格式并剥离多余字符 if input_str.startswith("b'") and input_str.endswith("'"): hex_part = input_str[2:-1].replace(r'\x', '') try: byte_data = bytes.fromhex(hex_part) print(byte_data.decode('utf-8')) except ValueError as e: print(f"Invalid hex string: {e}") else: print("Input format should be like b'\\xe1\\x80\\xad'")
原方法报错原因
你之前尝试int(binary, 16)失败,是因为输入字符串包含b'、'和\x这些非十六进制字符,无法直接转换为整数。必须先剔除这些无关内容,只保留纯十六进制序列才能进行转换。
内容的提问来源于stack exchange,提问作者Deersfeet
相关产品推荐
相关产品推荐

