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

Python中打印字典/列表时如何显示实际Unicode字符?

关于Python字典打印时特殊字符显示问题的解答

咱们一步一步来拆解你遇到的问题:

为什么会出现这种显示差异?

1. 直接打印变量a时正常显示

当你直接打印字符串变量a的时候,Python会调用字符串的__str__()方法——这个方法的设计目标就是返回人类友好可读的字符串形式,所以像™这种Unicode字符会直接渲染显示出来。

2. 打印字典di时显示转义序列

而打印字典时,Python会调用字典的__str__()方法,这个方法内部会对字典里的每个元素调用__repr__()方法。字符串的__repr__()方法返回的是字符串的“官方”表示形式——也就是能用来重新创建这个字符串的格式,所以会把非ASCII字符转换成对应的Unicode转义序列(比如\xe2\x84\xa2就是™的UTF-8字节编码),确保在任何环境下都能准确表达字符串的原始内容。

3. 打印di["k"]时又正常显示

这时候你是直接取出了字典里的字符串值,和直接打印a的逻辑完全一致,Python调用的还是字符串的__str__()方法,所以™又能正常显示了。

怎么让打印字典时直接显示正确符号?

给你几个实用的解决方法:

方法1:用json.dumps()输出

JSON格式天然支持Unicode字符,借助json模块可以轻松实现需求:

import json

a = 'abc ™ def'
di = {"k":a}
print(json.dumps(di, ensure_ascii=False))

输出结果:{"k": "abc ™ def"}

方法2:手动遍历格式化输出

如果不想引入额外模块,可以自己遍历字典键值对,用友好格式打印:

a = 'abc ™ def'
di = {"k":a}
print("{")
for key, value in di.items():
    print(f"    '{key}': '{value}',")
print("}")

输出效果:

{
    'k': 'abc ™ def',
}

方法3:自定义字典类(进阶)

如果需要频繁处理这类场景,可以自定义一个字典类,重写它的__str__()方法:

class FriendlyDict(dict):
    def __str__(self):
        items = [f"'{k}': '{v}'" for k, v in self.items()]
        return "{" + ", ".join(items) + "}"

a = 'abc ™ def'
di = FriendlyDict({"k":a})
print(di)

直接打印di就会输出:{'k': 'abc ™ def'}


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:56:20