Python 按原样打印UTF-8值';s原始字符而不是其代码
请看以下代码:Python 按原样打印UTF-8值';s原始字符而不是其代码,python,unicode,utf-8,Python,Unicode,Utf 8,请看以下代码: a = {'name': u'احسان', 'family': u'شیرزادی'} print a 如您所见,我已经用UTF-8字符填充了“name”和“family”。但当我打印a时,结果是: {'name': u'\u0627\u062d\u0633\u0627\u0646', 'family': u'\u0634\u06cc\u0631\u0632\u0627\u062f\u06cc'} 如何强制打印存储在变量中的数据?如果将dict转换为str(就像print内
a = {'name': u'احسان', 'family': u'شیرزادی'}
print a
如您所见,我已经用UTF-8字符填充了“name”和“family”。但当我打印a时,结果是:
{'name': u'\u0627\u062d\u0633\u0627\u0646', 'family': u'\u0634\u06cc\u0631\u0632\u0627\u062f\u06cc'}
如何强制打印存储在变量中的数据?如果将
dict
转换为str
(就像print
内部所做的那样),它会在键和值上使用repr
,以便打印unicode码点而不是实际字符。您可以通过单独打印值来解决此问题,例如
for key, value in a.iteritems():
print(u"{}: {}".format(key, value))
给予
或者-如果希望输出的格式与打印的格式相同,请使用join
:
print u"{" + ", ".join(u"{}: {}".format(key, value) for key, value in a.iteritems()) + "}"
给予
请注意,这会删除字符串周围的引号(只要仅用于打印,就可以)
输出
name احسان
family شیرزادی
打印的内容正是存储在变量中的内容。除非解析源代码,否则无法区分在运行时编写的转义序列和文本。但是如果你不想打印转义序列,你可以自己格式化字符串。将数据存储为UNICODE,而不是UTF-8。要将其打印为UTF-8编码字符串,可以使用打印['name'].encode('utf8')
。
{name: احسان, family: شیرزادی}
# -*- 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 شیرزادی