将UTF-8值打印为原始字符而不是其代码

时间:2014-08-15 17:50:40

标签: python unicode utf-8

看看这段代码:

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'}

如何强制打印存储在变量中的数据?

2 个答案:

答案 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 شیرزادی