7

我正在使用 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'>
>>> 
4

2 回答 2

7

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

这就像使用\tvs \T; 前者在 python 文字中具有意义(它被解释为制表符),后者仅表示反斜杠和大写 T(两个字符)。

为了帮助理解 Unicode 和字节字符串之间的区别,请阅读Python Unicode HOWTO;我还可以推荐Joel Spolsky 关于 Unicode 的文章

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

于 2013-01-28T09:56:12.877 回答
2

与 C 不同,在 Python 中,字符串可以用单引号 ( ') 和双引号 ( ") 括起来——撇开三双引号"""

因此,'\u0391'只是一个包含字母\u039的字符串1。当漂亮地打印这个字符串时,\通过另一个\.

相反,u前面有 a 会使字符串被视为 Unicode,并且所有转义都被评估。因此,被解释为与上述不同的“u'\u0391'包含代码点的 Unicode 字符串”。0391

于 2013-01-28T10:00:07.420 回答