这是我制作的示例程序:
>>> print u'\u1212'
ሒ
>>> print '\u1212'
\u1212
>>> print unicode('\u1212')
\u1212
为什么在\u1212
时,我会获得ሒ
而不是print unicode('\u1212')
?
我正在创建一个存储数据而不打印数据的程序,那么如何存储ሒ
而不是\u1212
?现在显然我做不了类似的事情:
x = u''+unicode('\u1212')
有趣的是,即使我这样做,这也是我得到的:
\u1212
我认为值得一提的另一个事实是:
>>> u'\u1212' == unicode('\u1212')
False
如何存储ሒ
或其他类似字符而不是\uxxxx
?
答案 0 :(得分:6)
'\u1212'
是一个包含6个字符的ASCII字符串:\
,u
,1
,2
,1
和{{1 }}
2
是一个包含6个字符的Unicode字符串:unicode('\u1212')
,\
,u
,1
,2
和{{1 }}
1
是一个包含一个字符的Unicode字符串:2
。
如果你想要的话,你应该使用全部的Unicode字符串。
u'\u1212'
如果由于某种原因您需要将ሒ
转换为u'\u1212'
,请使用
'\u1212'
(请注意,在Python 3中,字符串始终是Unicode。)
答案 1 :(得分:1)
这只是一种误解。
这是一个unicode字符串:x = u'\u1212'
当您致电print x
时,它将打印其角色(ሒ
),如图所示。如果您只是调用x,它将显示repr
它的意思:
u'\u1212'
一切都与世隔绝。
这是一个ascii字符串:y = "\u1212"
当您致电print y
时,它将打印其值(\u1212
),如图所示。如果您只是调用x,它将显示repr
它的意思:
'\\udfgdfg'
注意双斜杠(\\
)表示正在转义斜杠。
所以,让我们看看以下函数调用:print unicode('\u1212')
这是一个函数调用,我们可以用变量替换字符串,所以我们将使用equivilent:
y = "\u1212"
print unicode(x)
但是在上面的第二个例子中,y
是一个ascii字符串,内部管理为'\ udfgdfg',它根本不是unicode字符串。所以'\\udfgdfg'
的unicode表示完全相同。这就是为什么它的表现不正确。