Python中字符串与编码示例代码


Posted in Python onMay 20, 2019

在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言

编码和解码

 

字符串在内存中以Unicode表示,在操作字符串时,经常需要str和bytes互相转换
 

如果在网络上传输或保存到磁盘上,则从内存读到的数据就是str,要把str变为以字节为单位的bytes,称为编码
 

如果从网络或磁盘上读取字节流,则从网络或磁盘上读到的数据就是bytes,要把bytes变为str,称为解码
 

为避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换

使用示例:

单个字符的编码

print(ord('A')) #输出:65,获取字符的整数表示
print(chr(66)) #输出:B,把编码转换为对应的字符

十六进制表示

print('中文') #输出:'中文',
print('\u4e2d\u6587') #输出:'中文','\u4e2d\u6587'和'中文'完全对等,如果知道字符的整数编码,还可以用十六进制这么写str

bytes类型的数据表示

x = b'ABC' #Python对bytes类型的数据用带b前缀的单引号或双引号表示,'ABC'和b'ABC'在显示上完全一样,但bytes的每个字符都只占用一个字节

编码

print('ABC'.encode('ascii')) #输出:b'ABC',以Unicode表示的str通过encode()方法可以编码为指定的bytes
print( '中文'.encode('utf-8')) #输出:b'\xe4\xb8\xad\xe6\x96\x87',
print( '中文'.encode('ascii')) #输出:报错,因为中文字符在ascii编码范围外,所以导致编码失败

解码

print(b'ABC'.decode('ascii')) #输出:'ABC'
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('ascii')) #输出:'中文'
print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')) #输出:'中',如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节

计算长度

#len(a)函数返回a的长度,如果a是字符串则返回字符数,如果a是字节表示则返回字节数
print(len('中文')) #输出:2,共2个字符
print(len('ABC')) #输出:3,共3个字符
print(len(b'ABC')) #输出:3,共是3个字节
print(len(b'\xe4\xb8\xad\xe6\x96\x87')) #输出:6,共是6个字节
print(len('中文'.encode('utf-8'))) #输出:6, 1个中文字符经过UTF-8编码后通常会占用3个字节,因此两个汉字的字节数是6

源码文件开头与编码

#!/usr/bin/env python3    告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释
# -*- coding: utf-8 -*-   告诉Python解释器,按照UTF-8编码读取源代码,否则在源代码中写的中文输出可能会有乱码

#注意:告诉编译器使用UTF-8编码并不意味着.py文件就是UTF-8编码的,必须并且要确保.py文件用UTF-8 without BOM编码保存,才可确保文件中的中文正常显示

总结

以上所述是小编给大家介绍的Python中字符串与编码示例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
使用Python实现分别输出每个数组
Dec 06 Python
如何基于python实现脚本加密
Dec 28 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
Python 远程开关机的方法
Nov 18 Python
一些让Python代码简洁的实用技巧总结
Aug 23 Python
python实现统计文本中单词出现的频率详解
May 20 #Python
详解Python字符串切片
May 20 #Python
Django中ORM外键和表的关系详解
May 20 #Python
利用Django模版生成树状结构实例代码
May 19 #Python
使用Python3内置文档高效学习以及官方中文文档
May 19 #Python
python反编译学习之字节码详解
May 19 #Python
python从入门到精通 windows安装python图文教程
May 18 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
python实现图片变亮或者变暗的方法
2015/06/01 Python
python连接mysql实例分享
2016/10/09 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python中常用的内置方法
2019/01/28 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
结构工程研究生求职信
2013/10/13 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
门市房租房协议书
2014/12/04 职场文书
2015国庆节宣传语
2015/07/14 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android