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

Python 2.7中如何正确格式化打印Unicode列表?

解决Python 2.7中Unicode列表格式化显示问题

这个问题在Python 2.7里挺常见的,本质是字符串格式化时列表元素的显示逻辑和直接打印元素不一样,我来给你拆解下原因和解决方案:

问题原因

当你用%s格式化列表时,Python会对整个列表调用str()方法,而列表的字符串表示会把每个元素转成repr()的结果——也就是Unicode对象会显示成带u'...'的转义形式,而不是直接渲染成字符。但单独print unicode_list[1]时,print语句会自动把Unicode对象转换成终端支持的编码输出,所以能正常显示►符号。

解决方案

方案一:手动转换列表元素为字符串

遍历列表,把每个Unicode元素编码成终端支持的字符串(比如UTF-8),再进行格式化:

unicode_list = [u'something', u'\u25ba']
# 把每个Unicode元素编码为UTF-8字符串
encoded_list = [item.encode('utf-8') for item in unicode_list]
print u'Unicode list %s' % encoded_list

输出结果:Unicode list ['something', '►']

方案二:用json模块格式化

json模块可以自动处理Unicode到字符的转换,只要设置ensure_ascii=False即可:

import json
unicode_list = [u'something', u'\u25ba']
print u'Unicode list %s' % json.dumps(unicode_list, ensure_ascii=False)

输出结果:Unicode list ["something", "►"](注意是双引号,和原生列表格式略有不同,但显示效果一致)

方案三:自定义列表的字符串格式

如果想要完全匹配原生列表的单引号格式,可以手动拼接字符串:

unicode_list = [u'something', u'\u25ba']
# 逐个处理元素,拼接成列表格式的字符串
list_str = '[' + ', '.join("'%s'" % item.encode('utf-8') for item in unicode_list) + ']'
print u'Unicode list %s' % list_str

输出结果和你想要的完全一致:Unicode list ['something', '►']

注意事项

需要确保你的终端编码是UTF-8(大部分现代终端默认都是),如果是其他编码(比如GBK),要把encode('utf-8')改成对应的编码,比如encode('gbk')——不过►符号在GBK编码里没有对应的字符,这时候可能会显示乱码或者报错,建议优先用UTF-8终端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:51:59