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


Posted in Python onJanuary 18, 2017

本文主要给大家介绍了关于 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 相关文章推荐
python多线程编程方式分析示例详解
Dec 06 Python
python抓取百度首页的方法
May 19 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
浅析Git版本控制器使用
Dec 10 Python
python内存动态分配过程详解
Jul 15 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
如何搭建pytorch环境的方法步骤
May 06 Python
Django中的模型类设计及展示示例详解
May 29 Python
python绘制分布折线图的示例
Sep 24 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
关于Python中异常(Exception)的汇总
Jan 18 #Python
python:socket传输大文件示例
Jan 18 #Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 #Python
python实现下载整个ftp目录的方法
Jan 17 #Python
ansible作为python模块库使用的方法实例
Jan 17 #Python
python 基础教程之Map使用方法
Jan 17 #Python
Python获取某一天是星期几的方法示例
Jan 17 #Python
You might like
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
php处理复杂xml数据示例
2016/07/11 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
js中将字符串转换成json的三种方式
2011/01/12 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
Prototype框架详解
2015/11/25 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
单位工程竣工验收方案
2014/03/16 职场文书
职称评定自我鉴定
2014/03/18 职场文书
销售竞赛活动方案
2014/08/23 职场文书
工程承包协议书范本
2014/09/29 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
2015年计划生育责任书
2015/05/08 职场文书
名人传读书笔记
2015/06/26 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Python中相见恨晚的技巧
2021/04/13 Python
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python