You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历Unicode字符时,如何输出对应实际字符而非转义序列?

解决Python遍历并输出Unicode实际字符的问题

首先纠正你代码里的一个小错误:你定义的hex_list漏掉了字符5,这会导致跳过所有包含5的十六进制码点,比如\u0005、\u0015等,先把这个补上。

正确的实现方式

不需要用eval这种复杂且不安全的方法,直接通过码点数值转换更简单可靠:

方法一:直接遍历码点范围(推荐)

Unicode基本多语言平面的码点范围是0到0xFFFF(即65535),用range遍历这个范围,再用chr()函数把数值转换成对应字符:

for code_point in range(0x10000):
    print(chr(code_point))

方法二:基于你的十六进制列表修改

如果你坚持用原来的四层循环写法,只需把四位十六进制字符串转成整数,再用chr()转换:

hex_list = "0123456789abcdef"  # 补上缺失的'5'
for c1 in hex_list:
    for c2 in hex_list:
        for c3 in hex_list:
            for c4 in hex_list:
                hex_str = c1 + c2 + c3 + c4
                # 将十六进制字符串转为十进制整数
                code_point = int(hex_str, 16)
                # 转换为对应Unicode字符并输出
                print(chr(code_point))

为什么你之前的写法失败

  1. 第一种eval写法:
    my_char = r"\u0000"是原始字符串,里面的\u不会被解析成转义序列,eval("print(my_char)")只是输出这个字符串本身,自然和之前结果一致。

  2. 第二种eval写法:
    你拼接出来的代码是print(\u0000),这不符合Python语法——\u只能出现在字符串字面量内部(比如"\u0000"),不能直接作为print的参数,所以会触发语法错误。

内容的提问来源于stack exchange,提问作者haifisch123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:50:16