Python存储韩语文本到字典时的编解码问题
解决Python字典打印韩文显示Unicode转义序列的问题
这个问题我之前也碰到过!本质是Python 2里字典默认的打印逻辑会调用repr()方法输出字符串,把Unicode字符转换成了\uc138这类转义序列;而单独打印字符串时是调用str()方法,在终端编码支持的情况下就能正常显示韩文。下面给你几个实用的解决办法:
手动遍历键值对打印
绕过字典默认的打印方式,逐个输出键和对应的值,这样每个值会以正常的Unicode字符显示:my_dict = {'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'} # Python 2写法 for key, value in my_dict.items(): print key, ":", value # 如果是Python 3(建议升级到Python 3,这类问题会少很多) # for key, value in my_dict.items(): # print(f"{key}: {value}")用json模块序列化打印
json模块可以帮我们自动处理Unicode字符的显示,记得加上ensure_ascii=False参数,避免转成ASCII转义:import json my_dict = {'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'} print(json.dumps(my_dict, ensure_ascii=False))执行后会直接输出
{"title": "세미나 후기"}这样的正常韩文。用pprint模块指定编码打印
如果习惯用pprint来格式化输出字典,可以指定encoding='utf-8'参数,让它把Unicode字符串转成UTF-8字节串输出:import pprint my_dict = {'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'} pprint.pprint(my_dict, encoding='utf-8')
另外补充一句:如果条件允许,建议直接升级到Python 3,因为Python 3默认字符串就是Unicode类型,打印字典时会直接显示正常的字符,这类编码问题会少很多~
内容的提问来源于stack exchange,提问作者user3562812
相关产品推荐
相关产品推荐

