请看下文。
问题描述
Python 中经常会用到 dict 类型,在 dict 中存储的值的类型很多,其中包括字符串类型。在 dict 中保存的字符串类型可能是 unicode 类型的字符串,如果不加处理,那么在输出时,会显示成 unicode 编码的形式,不能正确的显示中文字符串。
例如,当你打印以下的字典时:
d = {'name': u'张三', 'age': 20}
print(d)
输出的内容为:
{'name': u'\u5f20\u4e09', 'age': 20}
你会发现字符串 'name' 对应的值就是一个以 '\u' 开头的 unicode 编码字符串。
为了让 dict 中的字符串可以正确的显示中文,我们需要进行一些处理。
解决方法
解决这个问题的方法就是,将 dict 类型的数据传给 json.dumps() 函数,这个函数将会把 dict 中的 unicode 字符串解码成中文字符串。需要注意的是,这个方法只能处理简单的数据类型,如果要处理复杂的嵌套数据类型,可以使用 recursive_unicode_to_str() 函数。
下面,我们就来看两个具体的实例。
实例1
首先,我们定义一个 dict,这个 dict 中包含有 unicode 类型的字符串。
d = {'name': u'张三', 'age': 20}
然后,调用 json.dumps() 函数将这个 dict 转换成 json 字符串。
s = json.dumps(d)
最后,将这个 json 字符串解析成 dict。
new_dict = json.loads(s)
打印这个新的 dict,你会发现,它的中文字符串已经正确的显示出来了。
print(new_dict)
输出内容如下所示:
{'name': '张三', 'age': 20}
实例2
下面,我们来看一个处理复杂数据类型的实例。在这个例子中,我们定义了一个包含列表、字典、元组、unicode 字符串的复杂数据类型。
complex_data = {
'lst': [1, 2, 3],
'dict': {'a': 'b', 'c': 'd'},
'tup': (1, 2, 3),
'name': u'张三'
}
然后,我们在这个数据类型中添加一个引用,使其不是一个简单数据类型。
complex_data['ref'] = complex_data
然后,我们调用 recursive_unicode_to_str() 函数对这个复杂数据类型进行处理。
new_complex_data = recursive_unicode_to_str(complex_data)
最后,打印这个新的数据类型。你会发现,在新的数据类型中,所有的 unicode 字符串都被正确的解码成中文字符串了。
print(new_complex_data)
输出内容如下所示:
{'lst': [1, 2, 3], 'dict': {'a': 'b', 'c': 'd'}, 'tup': (1, 2, 3), 'name': '张三', 'ref': {'lst': [1, 2, 3], 'dict': {'a': 'b', 'c': 'd'}, 'tup': (1, 2, 3), 'name': '张三', 'ref': {...}}}
总结
本文中,我们简要介绍了 Python 中如何将 dict 中的 unicode 字符串解码成中文字符串。我们提供了两个具体的实例,一个是简单数据类型的处理,另一个是复杂数据类型的处理。当你在使用 Python 的时候,遇到类似的问题时,可以使用这种方法和函数对数据进行处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python将dict中的unicode打印成中文实例 - Python技术站