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定时执行指定函数的方法
May 27 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
python实现人脸识别代码
Nov 08 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
将python安装信息加入注册表的示例
Nov 20 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
Django-imagekit的使用详解
Jul 06 Python
python如何快速生成时间戳
Jul 21 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 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
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript引用对象的方法
2007/01/11 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python中的yield使用方法
2014/02/11 Python
关于python写入文件自动换行的问题
2018/06/23 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
基于python3实现倒叙字符串
2020/02/18 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
英国鞋网:Rubber Sole
2020/03/03 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
母亲节感恩寄语
2014/02/21 职场文书
十佳党员事迹材料
2014/08/28 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
第一书记观后感
2015/06/08 职场文书
文艺演出主持词
2015/07/01 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL