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 09 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python实现维吉尼亚算法
Mar 20 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python中比较两个列表的实例方法
Jul 04 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
解决Python对齐文本字符串问题
Aug 28 Python
python实现单链表的方法示例
Sep 03 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
Python破解极验滑动验证码详细步骤
May 21 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
浅谈PHP的反射机制
2016/12/15 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
python中执行shell命令的几个方法小结
2014/09/18 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
美国购车网站:TrueCar
2016/10/19 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2014年车间工作总结
2014/11/21 职场文书
工程部文员岗位职责
2015/02/04 职场文书
教师工作决心书
2015/02/04 职场文书
神农溪导游词
2015/02/11 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android