我有一个关于在python中将一个字典值分配给另一个字典值的问题,该值包含一些中文字符
# -*- coding: utf-8 -*-
import string
a = {}
a['1'] = '大' # chinese character
b = {}
b['1'] = a['1']
print a['1']
print a
print b
打印输出
大
{'1': '\xe5\xa4\xa7'}
{'1': '\xe5\xa4\xa7'}
为什么a
和a['1']
之间存在差异?如何print a
成为{'1': '大'}
?
答案 0 :(得分:1)
为什么a和['1']之间存在差异?
第一个(a
)是你的字符包裹在字典中。当您打印字典时,Python将打印字符(\xe5\xa4\xa7
)的原始字节,这是UTF-8编码。当您使用print a[1]
直接打印字符串时,Python会将这3个字节解码为各自的字符。
如何使['1']和b ['1']成为大?
它们已经是一样的了。只是做
print a['1']
print b['1']
添加以下类以按预期转储字典。请注意,此代码假定您的所有字符串都采用UTF-8格式。
class MyPrettyPrinter(pprint.PrettyPrinter):
def format(self, object, context, maxlevels, level):
if isinstance(object, str):
return (object.decode('utf8'), True, False)
return pprint.PrettyPrinter.format(self, object, context, maxlevels, level)
MyPrettyPrinter().pprint(a) # {1: 大}