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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
详解python3实现的web端json通信协议
Dec 29 Python
python开发简易版在线音乐播放器
Mar 03 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
在python里从协程返回一个值的示例
Feb 19 Python
详解Python正则表达式re模块
Mar 19 Python
Python concurrent.futures模块使用实例
Dec 24 Python
python手写均值滤波
Feb 19 Python
Python实现画图软件功能方法详解
Jul 28 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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
Protoss兵种对照表
2020/03/14 星际争霸
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
跟老齐学Python之Python安装
2014/09/12 Python
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python中bytes和str类型的区别
2019/10/21 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
护理学应聘自荐书范文
2014/02/05 职场文书
精神文明单位申报材料
2014/05/02 职场文书
大学生社会实践方案
2014/05/11 职场文书
作风转变心得体会
2014/09/02 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL