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 相关文章推荐
Python下rrdtool模块的基本使用方法
Nov 13 Python
说一说Python logging
Apr 15 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
python向图片里添加文字
Nov 26 Python
python3 实现调用串口功能
Dec 26 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
Js的MessageBox
2006/12/03 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
小程序实现留言板
2018/11/02 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python实现flappy bird小游戏
2018/12/24 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
python带参数打包exe及调用方式
2019/12/21 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
作为网站管理者应当如何防范XSS
2014/08/16 面试题
《日月潭》教学反思
2014/02/28 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书