我正在使用 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'>
>>>
我正在使用 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'>
>>>
您只能\uabcd
在 unicode 字符串文字中使用 unicode 转义 ( )。它们在字节串中没有意义。Python 2 Unicode 文字 ( u'some text'
) 是与 Python 字节字符串 ( ) 不同类型的 Python 对象'some text'
。
这就像使用\t
vs \T
; 前者在 python 文字中具有意义(它被解释为制表符),后者仅表示反斜杠和大写 T(两个字符)。
为了帮助理解 Unicode 和字节字符串之间的区别,请阅读Python Unicode HOWTO;我还可以推荐Joel Spolsky 关于 Unicode 的文章。
注意:在 Python 3 中,应用相同的差异,但'some text'
它是 Unicode 字符串文字,并且b'some text'
是字节串语法。
与 C 不同,在 Python 中,字符串可以用单引号 ( '
) 和双引号 ( "
) 括起来——撇开三双引号"""
。
因此,'\u0391'
只是一个包含字母\
、u
、0
、3
和9
的字符串1
。当漂亮地打印这个字符串时,\
通过另一个\
.
相反,u
前面有 a 会使字符串被视为 Unicode,并且所有转义都被评估。因此,被解释为与上述不同的“u'\u0391'
包含代码点的 Unicode 字符串”。0391