2024-05-15 12:46:54 发布
网友
我正在使用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'> >>>
只能在unicode字符串文本中使用unicode转义(\uabcd)。它们在字节字符串中没有意义。Python 2 Unicode文本(u'some text')与Python字节字符串('some text')是不同类型的Python对象。
\uabcd
u'some text'
'some text'
就像使用\t对\T;前者在python文本中有意义(它被解释为tab字符),后者只表示反斜杠和大写T(两个字符)。
\t
\T
为了帮助理解Unicode和字节字符串之间的区别,请阅读Python Unicode HOWTO;我也可以推荐Joel Spolsky on Unicode article。
注意:在Python 3中,同样的区别也适用,但是'some text'是Unicode字符串文本,而b'some text'是bytestring语法。
b'some text'
与C相反,在Python中,字符串可以用简单的引号(')和双引号(")括起来,而不使用三重双引号"""。
'
"
"""
因此,'\u0391'只是包含字母\、u、0、3、9和1的字符串。在打印这个字符串时,\通过另一个\转义。
\
u
0
3
9
1
相反,前面有一个u会使字符串被视为Unicode,并计算所有转义。因此,u'\u0391'被解释为“包含代码点的Unicode字符串”0391,这与上面的不同。
0391
只能在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'
只是包含字母\
、u
、0
、3
、9
和1
的字符串。在打印这个字符串时,\
通过另一个\
转义。相反,前面有一个
u
会使字符串被视为Unicode,并计算所有转义。因此,u'\u0391'
被解释为“包含代码点的Unicode字符串”0391
,这与上面的不同。相关问题 更多 >
编程相关推荐