全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python中的字符串操作和编码Unicode详解

本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。

字符串类型

str:Unicode字符串。采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替。无论用哪种方式进行制定,在Python内部存储时没有区别。

bytes:二进制字符串。由于jpg等其他格式的文件不能用str进行显示,所以才用bytes来表示,bytes的每个字节为一个0-255的数字。如果打印的时候,Python会把能够用ASCII表示的部分显示为ASCII,这样方便阅读。bytes几乎支持除了格式化以外的所有str的方法,甚至包括了re模块

bytearray() :二进制可原地变动的字符串。

utf-8编码范围

范围 字节数 存储格式
0x0000~0x007F (0 ~ 127) 1字节 0xxxxxxx
0x0080~0x07FF(128 ~ 2047) 2字节 110xxxxx 10xxxxxx
0x0800~FFFF(2048 ~ 65535)  3字节 1110xxxx 10xxxxxx 10xxxxxx
0x10000~1FFFFFF(65536 ~ 2097152) 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x2000000~0x3FFFFFF 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x4000000~0x7FFFFFFF)  6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

字节顺序标记BOM

BOM是byte order marker的缩写,

指定编码写入时的规则

Python在使用'utf-8'编码写入文件时不会写入BOM头,但是如果指定编码'utf-8-sig'则会迫使Python写入一个BOM头。

使用'utf-16-be'不会写入一个BOM头,但是采用'utf-16'则会写入一个BOM头。

>>> open('h.txt','w',encoding='utf-8-sig').write('aaa')
3
>>> open('h.txt','rb').read()
b'\xef\xbb\xbfaaa'
>>> open('h.txt','w',encoding='utf-16').write('bbb')
3
>>> open('h.txt','rb').read()
b'\xff\xfeb\x00b\x00b\x00'
>>> open('hh.txt','w',encoding='utf-16-be').write('ccc')
3
>>> open('hh.txt','rb').read()
b'\x00c\x00c\x00c'
>>> open('h.txt','w',encoding='utf-8').write('ddd')
3
>>> open('h.txt','rb').read()
b'ddd'

读取时的规则

如果指定了正确的编码,那么BOM会忽略,否则BOM会显示为乱码或者返回异常。

>>> open('h.txt','r').read()
'锘縟dd'
>>> open('h.txt','r',encoding='utf-8-sig').read()
'ddd'

编码与解码

  • chr和ord
>>> ord('中') #20013
>>> chr(20013) #'中'
  • 把Unicode硬编码进字符串中。

       '\xhh':用2位十六进制来表示一个字符

       '\uhhhh':用4位十六进制来表示一个字符:

       '\Uhhhhhhhh':用8位十六进制来表示一个字符

       >>> s = 'py\x74h\u4e2don' #'pyth中on'

str和bytes, bytearray进行转换

str.encode(encoding='utf-8')

bytes(s,encoding='utf-8')

bytes.decode(encoding='utf-8')

str(B, encoding='utf-8')

bytearray(string, encoding='utf-8')

bytearray(bytes)

文档编码声明

Python默认使用utf-8编码。

# -*- coding: latin-1 -*- :表示声明文档为latin-1编码。

帮助函数

sys.platform  #'win32'
sys.getdefaultencoding() # 'utf-8'
sys.byteorder  #'little'
s.isalnum()  #s表示字符串
s.isalpha()
s.isdecimal
s.isdigit()
s.isnumeric()
s.isprintable()
s.isspace()
s.isidentifier() #如果字符串可以用作变量名,那么返回True
s.islower()
s.isupper()
s.istitle()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# python  # unicode字符串  # python中字符串操作  # unicode  # 操作  # 彻底搞懂Python字符编码  # python中的编码知识整理汇总  # python编码总结(编码类型、格式、转码)  # Python编码规范摆脱Python编码噩梦  # 则会  # 文档  # 可以用  # 均为  # 朋友们  # 给大家  # 会把  # 这篇文章  # 不能用  # 多说  # 哪种  # 才用  # 变量名  # 单引号  # 双引号  # 来代替  # 有疑问  # x07FF  # xxxxxxx  # xxxxx 


相关文章: 临沂网站制作企业,临沂第三中学官方网站?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  定制建站策划方案_专业建站与网站建设方案一站式指南  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何通过虚拟机搭建网站?详细步骤解析  网站按钮制作软件,如何实现网页中按钮的自动点击?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  建站之星如何保障用户数据免受黑客入侵?  如何高效完成自助建站业务培训?  宝塔新建站点报错如何解决?  ,巨量百应是干嘛的?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何快速搭建高效服务器建站系统?  如何通过FTP空间快速搭建安全高效网站?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  建站主机是否属于云主机类型?  免费视频制作网站,更新又快又好的免费电影网站?  自助网站制作软件,个人如何自助建网站?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  网站制作公司排行榜,四大门户网站排名?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  C#怎么创建控制台应用 C# Console App项目创建方法  建站上传速度慢?如何优化加速网站加载效率?  制作网页的网站有哪些,电脑上怎么做网页?  如何在IIS中配置站点IP、端口及主机头?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  在线教育网站制作平台,山西立德教育官网?  如何用AWS免费套餐快速搭建高效网站?  网站制作说明怎么写,简述网页设计的流程并说明原因?  常州企业建站如何选择最佳模板?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何快速搭建安全的FTP站点?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  Swift中循环语句中的转移语句 break 和 continue  如何通过万网虚拟主机快速搭建网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站之星后台密码遗忘?如何快速找回?  ,制作一个手机app网站要多少钱?  建站主机与虚拟主机有何区别?如何选择最优方案?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  免费网站制作appp,免费制作app哪个平台好?  ,购物网站怎么盈利呢?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何快速打造个性化非模板自助建站?  MySQL查询结果复制到新表的方法(更新、插入)  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。