u'字符串'之间的区别和unicode(字符串)

时间:2013-12-11 05:04:15

标签: python unicode

这是我制作的示例程序:

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

2 个答案:

答案 0 :(得分:6)

'\u1212'是一个包含6个字符的ASCII字符串:\u121和{{1 }}

2是一个包含6个字符的Unicode字符串:unicode('\u1212')\u12和{{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表示完全相同。这就是为什么它的表现不正确。