看看这段代码:
a = {'name': u'احسان', 'family': u'شیرزادی'}
print a
正如您所看到的,我已经用UTF-8字符填充了'name'和'family'。但是当我打印出来时,结果是:
{'name': u'\u0627\u062d\u0633\u0627\u0646', 'family': u'\u0634\u06cc\u0631\u0632\u0627\u062f\u06cc'}
如何强制打印存储在变量中的数据?
答案 0 :(得分:3)
如果您将dict
转换为str
(内部为print
),则会在键和值上使用repr
,以便打印unicode代码点而不是实际的人物。您可以通过单独打印值来解决此问题,例如
for key, value in a.iteritems():
print(u"{}: {}".format(key, value))
给出
name: احسان
family: شیرزادی
或 - 如果您希望输出格式与print a
相同 - 使用join
:
print u"{" + ", ".join(u"{}: {}".format(key, value) for key, value in a.iteritems()) + "}"
给出
{name: احسان, family: شیرزادی}
请注意,这会删除字符串周围的引号(只要您只使用它进行打印,就应该没问题。)
答案 1 :(得分:1)
# -*- coding: utf-8 -*-
import sys
a = {'name': u'احسان', 'family': u'شیرزادی'}
for key in a:
val = a[key].strip().encode('utf-8')
print key, val
<强>输出强>
name احسان
family شیرزادی