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()

二、

1.  = 是赋值  == 是比较值是否相等  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

对于英文:

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')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值