Python字符串:字节与Unicode
示例
在Python2中,字符串有两种变体:由类型为(str)的字节组成的字符串和由类型()的文本组成的字符串unicode。
在Python2中,类型的对象str始终是字节序列,但通常用于文本和二进制数据。
字符串文字被解释为字节字符串。
s = 'Cafe' #类型==str
有两个例外:您可以通过在Unicode(文本)文字上加上前缀来显式定义Unicode(文字)文字u:
s = u'Café' #类型==Unicode b = 'Lorem ipsum' #类型(b)==str
或者,您可以指定整个模块的字符串文字应创建Unicode(文本)文字:
from __future__ import unicode_literals s = 'Café' #类型==Unicode b = 'Lorem ipsum' #类型(b)==Unicode
为了检查您的变量是否是字符串(Unicode或字节字符串),可以使用:
isinstance(s, basestring)
在Python3中,该str类型是Unicode文本类型。
s = 'Cafe' #类型==str s = 'Café' #类型==str (note the accented trailing e)
另外,Python3添加了一个bytes对象,该对象适合于二进制“blob”或写入与编码无关的文件。要创建一个字节对象,可以b在字符串文字前添加前缀或调用该字符串的encode方法:
#或者,如果您确实需要一个字节字符串: s = b'Cafe' #类型==字节 s = 'Café'.encode() #类型==字节
要测试值是否为字符串,请使用:
isinstance(s, str)