Python unicode字符串文字::'\ u0391'和u'\ u0391'之间的区别是什么

时间:2013-01-28 09:55:28

标签: python unicode unicode-literals

我正在使用Python 2.7.3。任何人都可以解释文字之间的区别:

'\u0391'

u'\u0391'

以及它们在下面的REPL中回显的不同方式(尤其是添加到a1的额外斜杠):

>>> a1='\u0391'
>>> a1
'\\u0391'
>>> type(a1)
<type 'str'>
>>> 
>>> a2=u'\u0391'
>>> a2
u'\u0391'
>>> type(a2)
<type 'unicode'>
>>> 

2 个答案:

答案 0 :(得分:6)

您只能在unicode字符串文字中使用unicode转义符(\uabcd)。它们在字节字符串中没有意义。 Python 2 Unicode文字(u'some text')是python字节字符串('some text')中不同类型的Python对象。

就像使用\t\T一样;前者在python文字中有意义(它被解释为制表符),后者只是反斜杠和大写字母T(两个字符)。

要帮助理解Unicode和字节字符串之间的区别,请阅读Python Unicode HOWTO;我还可以推荐Joel Spolsky on Unicode article

注意:在Python 3中,同样的差异适用,但'some text'是Unicode字符串文字,b'some text'是字节串语法。

答案 1 :(得分:2)

与C相反,在Python中,字符串可以用简单的引号(')和双引号(")括起来 - 撇开三双引号{{1} }。

因此,"""只是一个包含字母'\u0391'\u03和{{1}的字符串}}。当相当打印此字符串时,9将通过另一个1转义。

相反,在前面加\会使字符串被视为Unicode,并且会计算所有转义。因此,\被解释为“包含代码点u的Unicode字符串”,这与上述不同。