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

Python3.9中如何从字符串变量打印Unicode字符?实操差异解惑

问题:两种Unicode字符串打印结果为何不同?

我刚接触编程,原本期望以下两种打印方式能输出相同的Unicode感叹号图形符号,但实际结果不一样,想知道原因。

实验代码

number   = 10071
byteStr  = number.to_bytes(4, byteorder='big')
hexStr   = hex(number)
uniChar  = byteStr.decode('utf-32be')
uniStr   = '\\u' + hexStr[2:6]
print(f'{number} - {hexStr[2:6]} - {byteStr} - {uniChar}')

print(f'{uniStr}')   # Not working
print(f'\u2757')     # Working

输出结果

10071 - 2757 - b"\x00\x00'W" - ❗
\u2757
❗

差异原因解释

  • print(f'{uniStr}')输出\u2757的原因:
    你构建的uniStr是字符串字面量'\\u2757',实际存储的是\、u、2、7、5、7这六个独立字符。Python在打印时会直接输出这些字符,不会把它当作Unicode转义序列解析——因为转义序列的解析是在字符串字面量定义阶段完成的,运行时拼接出来的字符串不会触发二次解析。

  • print(f'\u2757')输出❗的原因:
    这里的\u2757是Python解析代码时就处理的Unicode转义序列,编译器会直接把它转换成对应的Unicode字符(U+2757,即感叹号符号),所以打印时输出的是符号本身。

如果想要让运行时拼接的字符串也被解析成Unicode字符,可以用以下方法:

import ast
uniStr = '\\u2757'
print(ast.literal_eval(f'"{uniStr}"'))  # 输出❗

或者:

import codecs
uniStr = 'u2757'
print(codecs.decode(uniStr, 'unicode-escape'))  # 输出❗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:21:12