我有一个关于在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': '大'}
发布于 2016-01-17 01:47:19
为什么a和‘1’之间有区别?
第一个(a)是包装在字典中的字符。当您打印字典时,Python将打印字符的原始字节(\xe5\xa4\xa7),这是它的UTF-8编码。当您直接使用print a[1]打印字符串时,Python会将这3个字节解码为各自的字符。
如何使a'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: 大}https://stackoverflow.com/questions/34830074
复制相似问题