Python2与python3中字符串的区别
Posted Chan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python2与python3中字符串的区别相关的知识,希望对你有一定的参考价值。
Python2
在python中包含两种字符串类型:str和unicode,str并不是完全意义上的字符串,其实是由unicode经过编码(encode)后的字节组成的字节字符串,而unicode则是真正意义上的字符串,由字符组成。
python 在内部使用两个字节来存储一个unicode,使用unicode对象而不是str的好处,就是unicode方便于跨平台。
两种方式定义一个unicode:
u1 = u\'你好\' u2 = unicode(\'你好\', \'utf-8\')
str.decode方法和unicode.encode方法是最常用的:
要明白要处理的是str还是unicode, 使用对的处理方法(str.decode/unicode.encode)
Python2的默认编码(默认字符集)是 asscii
注意
str也能编码(encode),unicode也能解码(decode)unicode解码意义不大
str编码通常会报错:
代码报错,提示错误信息:UnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xe4 in position 0: ordinal not in range(128)
是因为没有指定defaultencoding,其实s.encode(‘utf-8’)是存在在一次隐式的decode:
默认编码:ascii是许多报错的原因,所以可以在代码设置默认编码(defaultencoding):
Python3
Python3的默认编码(默认字符集)是 utf-8:
python3默认使用的是str类型对字符串编码,默认使用bytes操作二进制数据流,编码使用enocde, 解码使用的是decode
Python2与python3字符串差异比较
字节码 | 字符串 | 默认编码 | |
Python2 | str | unicode | ascii |
Python3 | bytes | str | utf-8 |
以上是关于Python2与python3中字符串的区别的主要内容,如果未能解决你的问题,请参考以下文章