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 相关文章推荐
Python3里的super()和__class__使用介绍
Apr 23 Python
浅谈Python中copy()方法的使用
May 21 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
零基础小白多久能学会python
Jun 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
E路文章系统PHP
2006/12/11 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
python中的字典操作及字典函数
2018/01/03 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
python getopt模块使用实例解析
2019/12/18 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
大学毕业感言100字
2014/02/03 职场文书
擅自离岗检讨书
2014/02/11 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
护理实习生带教计划
2015/01/16 职场文书
毕业酒会致辞
2015/07/29 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL