我正在使用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'>
>>>
答案 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'
,\
,u
,0
,3
和{{1}的字符串}}。当相当打印此字符串时,9
将通过另一个1
转义。
相反,在前面加\
会使字符串被视为Unicode,并且会计算所有转义。因此,\
被解释为“包含代码点u
的Unicode字符串”,这与上述不同。