Python每日小知识(2):字符串和编码

了解:ASCII编码(是1个字节)仍然能够完美滴处理数字,由于最先的时候只有127个字符编入计算机,可是遇处处理中文1个字节就有点捉襟见肘了,这时候咱们就脑袋疼了,因此中国制定了GB2312编码,用来把中文编进去;而后各国也开始制定本身国家的编码,日文有Shift_JIS,韩文有Euc_kr。多种语言的编码又让计算机苦不堪言了,因而各类乱码就在页面中上蹿下跳了。时势造英雄Unicode应运而生(一般是2个字节),把全部语言都统一到这编码中,足以应对乱码的负隅顽抗。而后对比了一下二者的区别:

clipboard.png

发现“竞”用Unicode编码十进制是31454,,二进制看上面,而字母“A”用Unicode编码存储还要在前面补八个0。

这就让计算机大哥很不爽了,无故端本身胖了一圈(用Unicode编码比用ASCII编码须要多出一倍的存储空间)为了保持优雅的身姿就直接化身为UTF-8编码。网络

这时候计算机就能够把一个Unicode字符根据不一样数字大小编码成(1-6)个字节任君挑选了。(经常使用字母通常1个字节,汉字稍肥3个字节,只有那些歪瓜裂枣才4-6个字节)好了到这里就能够说是减肥成功了。(节省了空间)函数

clipboard.png

浅显的认识一下Python3中的“字符串”小弟编码

(1)首先要知道这家伙是由Unicode编码滴,支持多语言,看图说话:

clipboard.png

(2)对于单个字符编码这种小意思的事情,Python提供ord()函数然字符摇身一变就成了整数了,chr()就硬生生把编码转换为对应字符啦。

小试牛刀:spa

clipboard.png

(3)若是你不当心知道了字符的整数编码,还阔以用十六进制怎么操做str滴:

clipboard.png

(4) 因为Python字符串类型是str(废话),以Unicode行走在内存中,一个字符对应
(1-6)个字节,但若是你要作一些不可描述的事,好比在网络上传输或保存在你珍藏的磁盘上,就须要把str这厮变成以字节为单位的bytes。Unicode表示的str经过encode()方法能够编码为指定的bytes。

有图有真相:3d

clipboard.png

没看错就是这么简单,可是要注意有中文的str这种异类是没法用帅气的ASCII编码的,由于中文编码的范围超过了ASCII编码所能承受帅气的范围,Python会报错。

相反的若是咱们偷偷的从网络或者磁盘读取了(咳咳)字节流,那么读到的数据就是bytes。想让它恢复本性,就得decode()方法出场了。code

clipboard.png

很明显了若是bytes中包含没法解码的字节,decode()方法就会无情的报错了。

若是它只是犯了一点点错(一部分无效字节)咱们仍是能够用(errors=’ignore’)拯救一下滴。blog

clipboard.png

脑残的想计算一下str包含多少个字符,能够用len()函数瞧瞧。

clipboard.png

不能厚此薄彼能计算str字符数,len()函数对bytes,就能够计算字节数:

clipboard.png

*格式化 常常咱们都会不当心瞄到什么‘亲爱滴xxx您好!你上个月还欠我很多话费呢,总共xxx’这样的字符串,对于 xxx的内容咱们是根据变量变化的,因此这就得格式化字符串的方式闪亮登场了。(用%实现)

clipboard.png

它可不止上面两兄弟,来给你看看比较常遇到的几胞胎,别搞错了

clipboard.png

下面的操做是比较666滴ip

clipboard.png

解释一下:03表明要补零,由于有三个数,因此就补两个零便可; .2f 表示:保留小数点后两位。

格式化整数和浮点数并制定是否补0和整数与小数的位数。内存

还有一种比较繁琐的方法Fomat()原理:用传入的参数依次替换字符串内的占位符

clipboard.png

注意:字符串

传入的参数要一一对应,还有要看清楚写法好比上图的:{0}、{1:.1f}%、{2}…

昨天我家商铺盈利了6000元,今天盈利了8500元,计算一下盈利提高的百分点,用格式化字符串表示“xx.x%”,保留小数点后一位。

是时候表演真正的技术了

clipboard.png

其中:s1为昨天盈利,s2为今天盈利;

注意:

“%”是普通字符时用“%%”进行转义

相关文章
相关标签/搜索