在python对象中打印为转义序列的Unicode字符

时间:2017-06-30 20:29:41

标签: python python-2.7

我正在使用python 2.7.13。我的python脚本生成一个包含希伯来语的字典。

代码如下,

# -*- coding: utf-8 -*-

val = "אבג".decode('utf-8')
print val
dict = {
        'attributes' : {
        'OBJECTID_1' : 1,
        'LOCID' : val
         }
}
print dict

结果如下,

אבג
{'attributes': {'LOCID': u'\u05d0\u05d1\u05d2', 'OBJECTID_1': 1}}

第一个结果显示为预期,因为我们使用' print'。但是,在我创建的词典中,希伯来语显示为unicode。

无论如何在我的字典中显示实际的希伯来语?或者这是预期的吗?

由于

1 个答案:

答案 0 :(得分:0)

在python2中,当你打印出一个列表时,你最终会打印该列表内容的 ProgressBar.max := ProgressBar.max +1; ProgressBar.StepBy(2); ProgressBar.StepBy(-1); ProgressBar.max := ProgressBar.max -1;

在python3中,字符串' s repr与其repr返回值相同。您可以在下面观察:

Python2

str

如上所述,

>>> val = "אבג".decode('utf-8')
>>> val         # displays repr value
u'\u05d0\u05d1\u05d2'
>>> print val   # displays str value
אבג

使用python3进行约束,>>> print [val] [u'\u05d0\u05d1\u05d2'] 个对象没有str函数 - 它们已被解码。

decode

你可以看到这就是它现在有效的原因。

对于您的问题,如果您想在打印字典时查看字符,可以执行以下操作:

>>> val = "אבג"
>>> val
'אבג'
>>> print(val)
אבג
>>> print([val])
['אבג']

旁注,请勿使用print dict['LOCID'] 来命名变量,因为它会影响您正在使用的非常重要的内置类。