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

Mar*_*tus 4 python unicode unicode-literals

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

'\u0391'
Run Code Online (Sandbox Code Playgroud)

和:

u'\u0391'
Run Code Online (Sandbox Code Playgroud)

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

>>> a1='\u0391'
>>> a1
'\\u0391'
>>> type(a1)
<type 'str'>
>>> 
>>> a2=u'\u0391'
>>> a2
u'\u0391'
>>> type(a2)
<type 'unicode'>
>>> 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

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

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

要帮助理解Unicode和字节字符串之间的区别,请阅读Python Unicode HOWTO ; 我也可以在Unicode文章上推荐Joel Spolsky.

注意:在Python 3中,相同的差异适用,但是'some text'是Unicode字符串文字,并且b'some text'是bytestring语法.