python3 str编码_python数据池,python3编码str转bytes,encode
一、python2 python3的区别
默认编码:2—ASCII码 3—-UTF-8
print:python2 可以不需要加括号(),python3必须加括号
python2中有range,还有xrange—生成器,可转换成range;python3中只有range
python2中的input,raw_input(); python3:input()
二、
- = 是赋值 == 是比较值是否相等 is也是比较,比较的是内存地址(看是不是一个东西) id(内容) :内存地址
#li1 = [1,2,3]#li2 = li1#li3 = li2#print(id(li1),id(li2)) 改变一个,另一个也会改变
2.数字,字符串—-小数据池(节省内存)
#数字,字符串 小数据池#数字的范围 -5 — 256#字符串:1,不能有特殊字符#2,s*20 还是同一个地址,s*21以后都是两个地址#i1 = 6#i2 = 6#print(id(i1),id(i2)) 一样的#i1 = 300#i2 = 300#print(id(i1),id(i2)) 不一样。pycharm显示一样是其影响,应在终端里操作。
其他的:list dict tuple set 无数据池概念
三、编码进阶
ascii
A :000000108位 一个字节
unicode A :00000000 00000001 00000010 0000010032位 四个字节
中:00000000 00000001 00000010 0000011032位 四个字节
utf-8 A : 001000008位 一个字节
中 :00000001 00000010 0000011024位 三个字节
gbk A :000001108位 一个字节
中 :00000010 0000011016位 两个字节1,各个编码之间的二进制,是不能互相识别的,会产生乱码。2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)
utf-8与gbk互相转化,需先转换成Unicode;
py3:
str 在内存中是用unicode编码。 问题:文件不能传输。(文件可理解成大字符串) 需转换成utf-8或gbk方式存储传输。
bytes类型(数据类型的一种,跟字符串很像) 编码方式为utf-8或gbk或gb2312。
所以要将str转为bytes
![Image 1][]
对于英文:
str :表现形式:s = ‘alex’
编码方式: 010101010 unicode
bytes :表现形式:s = b’alex’
编码方式: 000101010 utf-8 gbk。。。。
对于中文:
str :表现形式:s = ‘中国’
编码方式: 010101010 unicode
bytes :表现形式:s = b’x\e91\e91\e01\e21\e31\e32’ 十六进制,人看不懂(三个字节一个中文)若两个字节表示一个中文,则时GBK
编码方式: 000101010 utf-8 gbk。。。。
如何将str转换成bytes类型?
s1 = ‘alex’
#encode 编码,如何将str —> bytes, ()
s11 = s1.encode(‘utf-8’)
s11= s1.encode(‘gbk’)print(s11) #b’alex’
s2= ‘中国’s22= s2.encode(‘utf-8’)
s22= s2.encode(‘gbk’)print(s22)
s11 = s1.encode(‘utf-8’)
[Image 1]:
还没有评论,来说两句吧...