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的dict字典结构操作方法学习笔记
May 07 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
Django基础知识 web框架的本质详解
Jul 18 Python
Python操作redis和mongoDB的方法
Dec 19 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
python实现最短路径的实例方法
Jul 19 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 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
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
整理Python 常用string函数(收藏)
2016/05/30 Python
你真的了解Python的random模块吗?
2017/12/12 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
在Python中表示一个对象的方法
2019/06/25 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
python实现学生通讯录管理系统
2021/02/25 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
几道PHP的面试题
2012/05/19 面试题
网络专业学生个人的自我评价
2013/12/16 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
家长对老师的评语
2014/04/18 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书