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

Python中Unicode字符打印异常:不同打印方式为何结果不同?

Python Unicode字符打印差异的原因

核心原因是不同打印方式调用了Python对象的不同字符串表示方法:

  • 当你打印列表(print(lista))时,Python会输出列表的__repr__()结果。这个方法的设计目标是让输出内容可直接作为Python代码复用,因此对于私有使用区(PUA)的Unicode字符(比如\ue001这类U+E000至U+F8FF范围内的字符),会显示其Unicode转义序列而非字符本身;而标准Unicode字符(如\u23fb)的repr()会直接显示字符。
  • 当你使用print(*lista)、单独打印单个字符(print("\ue001")),或者循环中直接打印元素(for char in lista: print(char))时,Python会调用__str__()方法。这个方法的目标是生成人类可读的字符串,会直接输出字符本身,只要你的终端支持该字符的渲染,就能正常显示。

验证示例

执行以下代码可以清晰看到两种方法的差异:

char = "\ue001"
print(repr(char))  # 输出 '\ue001',对应列表打印时的表现
print(str(char))   # 输出字符本身,对应print(*lista)的表现

补充说明

私有使用区(PUA)的Unicode字符没有被标准Unicode联盟分配具体字符定义,通常由厂商或自定义场景使用。Python的repr()对这类字符默认输出转义序列,而str()则直接输出字符编码对应的字形,能否正常显示取决于终端是否有对应字形的字体支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:45:03