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

2024-05-15 12:46:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: a2a1type方式unicoderepl文字区别
2条回答

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

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

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

注意:在Python 3中,同样的区别也适用,但是'some text'是Unicode字符串文本,而b'some text'是bytestring语法。

与C相反,在Python中,字符串可以用简单的引号(')和双引号(")括起来,而不使用三重双引号"""

因此,'\u0391'只是包含字母\u0391的字符串。在打印这个字符串时,\通过另一个\转义。

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

相关问题 更多 >