资讯专栏INFORMATION COLUMN

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

gyl_coder / 2630人阅读

摘要:表示的通过方法可以编码为指定的。有图有真相没看错就是这么简单,但是要注意有中文的这种异类是无法用帅气的编码的,因为中文编码的范围超过了编码所能承受帅气的范围,会报错。

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

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

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

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

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

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

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

小试牛刀:

(3)如果你不小心知道了字符的整数编码,还阔以用十六进制怎么操作str滴:

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

有图有真相:

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

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

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

如果它只是犯了一点点错(一部分无效字节)我们还是可以用(errors=’ignore’)拯救一下滴。

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

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

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

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

下面的操作是比较666滴

解释一下:03代表要补零,因为有三个数,所以就补两个零即可; .2f 表示:保留小数点后两位。

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

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

注意:

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

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

是时候表演真正的技术了

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

注意:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41440.html

相关文章

  • Python每日知识(1):输入输出、数据类型变量

    摘要:理解了输入输出,就可以简单的打印有意义的程序了比如打印先输入回车输入或其它内容,存入变量输入当然为了用户体验更好,可以适当的添加一些提示信息数据类型和变量整数常用十六进制表示与数学上表示方法一样等。常量不能变的量,通常用大写字母表示 1、输出函数:Print() 接受多个字符串时用逗号隔开(相当于空格),就可连成一串输出。 showImg(https://segmentfault.co...

    546669204 评论0 收藏0
  • Python每日知识(5):调用定义函数

    摘要:再调用个绝对值内置函数来加深影响心急吃不了热豆腐啊有且仅能传入一个参数,传入不符合数量的参数就会报错误传入的参数数量是没错了,但传入错误的参数类型也是会死的很惨的。 调用函数 干货:Python官网查看函数帮助信息 http://docs.python.org/3/libr... showImg(https://segmentfault.com/img/bV71Kn?w=348&h=8...

    yibinnn 评论0 收藏0
  • Python每日知识(3):listtuple的使用

    摘要:同样的用上节讲的函数获取元素的个数记住这是获取的是列表个数个数个数重要的事说三遍。用索引访问每个元素的位置,索引是从开始的开始的开始的索引也是有容忍限度的超过了就会原地爆炸报错如果列表中元素个数贼多,想获取后面的元素就要实行曲线救国了。 list和tuple是Python内置的有序集合,一个是可变的,一个是不可变滴;这都不是事,主要是理解一下指向不变。 看图说话: showImg(ht...

    SoapEye 评论0 收藏0
  • Python每日知识(4):简单的条件判断循环

    摘要:简单的条件判断剖析一个简单的程序理解条件判断首先再次尬聊一下之前已经提过可以用读取用户输入。没有对比就没有伤害,先举个例子这是一个循规蹈矩的的条件判断语句。 简单的条件判断 剖析一个简单的程序理解条件判断 showImg(https://segmentfault.com/img/bV7VFS?w=300&h=377); 首先再次尬聊一下input()之前已经提过可以用input()读取...

    SwordFly 评论0 收藏0
  • Python每日知识(6)函数滴参数

    摘要:默认参数这家伙还是有点点瑕疵的,默认参数必须一定以及肯定得指向不可变对象。写完这顽固不化的默认参数,就轮到灵活多变的可变参数上场了。 函数的参数 总结一下这几种参数先:本来位置是默认滴,后来不知咋地可变了,位置上还用关键字这么上档次的名字命名关键字了。先讲讲废话:我们做接口自动化或者其它测试,总之需要使用一些参数的时候,我们作为函数的调用者,无需了解太多,你只需要肤浅的知道如何如何滴传...

    andot 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<