Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >字符串与编码

字符串与编码

作者头像
py3study
发布于 2020-01-16 08:00:12
发布于 2020-01-16 08:00:12
1.1K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言

编码和解码   字符串在内存中以Unicode表示,在操作字符串时,经常需要str和bytes互相转换   字符串是可以直接在内存上进行处理的,但如果要将其传输到网络或磁盘上,需要将其编码,反过来则需要解码,因为str是不可以直接存储在磁盘上或在网络上传输的   如果将字符串从内存传输到网络或保存到磁盘,则要把str转换为以字节为单位的bytes,称为编码   如果要从网络或磁盘上获取字符串,则要从网络上或者磁盘上读取字节流,并把bytes转换为str,称为解码   为避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换,关于编码,请参照字符编码

使用示例:

单个字符的编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(ord('A')) #输出:65,获取字符的整数表示
print(chr(66)) #输出:B,把编码转换为对应的字符

十六进制表示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print('中文') #输出:'中文'print('\u4e2d\u6587') #输出:'中文''\u4e2d\u6587''中文'完全对等,如果知道字符的整数编码,还可以用十六进制这么写str

bytes类型的数据表示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = b'ABC' #Python对bytes类型的数据用带b前缀的单引号或双引号表示,'ABC'和b'ABC'在显示上完全一样,但bytes的每个字符都只占用一个字节

编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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编码范围外,所以导致编码失败

解码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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'忽略错误的字节

计算长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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

源码文件开头与编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python3       告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释
# -*- coding: utf-8 -*-      告诉Python解释器,按照UTF-8编码读取源代码,否则在源代码中写的中文输出可能会有乱码

#注意:告诉编译器使用UTF-8编码的同时,.py文件也要保存为UTF-8 without BOM编码,两者统一了,才可确保文件中的中文正常显示
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python学习总结4--字符串和编码
一、编码历史     由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。     但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。     Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了     本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码
曼路
2018/10/18
4460
Python学习总结4--字符串和编码
Python基础教程之字符串和编码
1. 字符编码 由于计算机只能处理数字,如果要处理文本就必须将文本转换为数字才能处理,最早设计的时候采用8b 表示一个字节,一个字节能够表示的最大整数是255,如果要表示更大的整数,就必须用多个字节。另外由于计算机是美国人发明的,所以计算机早期只有127个字符被编码到计算机了,也就是Ascii码,后来要处理中文中国就指定了GB2312 ,但是其他国家也有自己的语言 然后就有了不同的标准, 所以就有组织将所有的统一成 Unicode编码。 2. python字符串 在python 中字符串支持多语言,py
执行上下文
2022/07/26
2720
AI 学习之路——轻松初探 Python 篇(三)
这是「AI 学习之路」的第 3 篇,「Python 学习」的第 2 篇 Python 字符串使用和 C 语言比较类似,但还有一些我们值得注意的地方需要关注,用这篇文章来帮助大家掌握 Python 的字符串吧! 编码 不论什么语言,我们都需要考虑一下这个语言的编码问题。「ASCII」编码是我们最熟悉的编码,但它只有 127 个字符被编码到计算机里面了,显然,像中日韩这类国家,语言文字比较特殊,就需要自己来指定编码格式。 比如,中国自己就制定了「GB2312」编码,韩文则是「EUC_KR」,俄语是「KOI8
小之丶
2018/03/07
8060
AI 学习之路——轻松初探 Python 篇(三)
Python基础 day2(1)
Python用缩进来组织代码块,坚持4个空格的缩进;也可以在文本编辑器中设置Tab转换为4个空格。
昆兰
2024/07/23
1150
教你一招 | Python3新特性(一) :字符串
从python2转到python3的第一个问题就是字符串的问题,我花了些时间把我能想到的和字符串处理有关的东西都整理如下。 1、Python2的字符串编码 在python2.X中的字符串编码有点麻烦,它所有的“普通字符串”是ascii码存储的,unicode字符串是16位unicode码存储的,这个时候就经常出现转换、乱码的问题。 1.1 python2中的普通字符串 >>> a="abc" >>> print a abc >>> print repr(a) 'abc' >>> type(a) <type
CDA数据分析师
2018/02/05
6750
第3章 Python 基础 ( Bytes类型 )
bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型
axiomxs
2021/11/26
5330
Python——搞定烦人的字符串编码
在学习Python之前,就听说过Python的版本圣战,最可怕的是有的写Py3的程序员觉得Py2是另一种语言....所以在刚开始学习的时候,我索性把Python3和Python2的文档都看了一遍。
Originalee
2018/08/30
8150
【Python】3“字符串和编码“
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位: # !/usr/bin/env python3 # -*- coding: utf-8 -*- s1 = 72 s2 = 85 r = (85 - 72) / 72 * 100 print('%0.1f%%' % r)
肓己
2021/08/12
4510
python--一文搞懂字符串的编解码
我们在使用python处理中文字符串时总会遇到一些问题,特别是一些老项目需要用到python2,中文显示乱码,文件读写异常等问题时常发生。
languageX
2023/05/04
1.7K0
字符、字符集、编码,以及它们python中会遇到的一些问题(下)
在看了很多的博客文章之后,总结整理得到了以下文章,非常感谢这些无私奉献的博主! 文章末尾有本文引用的文章的链接,如果有漏掉的文章引用,可以发邮件联系我,随后再次附上链接! 侵删!!! 这一部分是下篇,主要讲的是编码部分,以及在python中会遇到的一些编码问题,偏向于实际应用一点。 上篇介绍了字符、字符集的一些概念,以及他们在python中的一些简单的代码示例,偏向于概念。 上篇地址:http://www.cnblogs.com/echo-coding/p/7435118.html 这绝对是个源
Echo_fy
2018/06/20
2.1K0
Python_实用入门篇_05
在计算机硬件中,编码(coding)是指用代码来表示各组数据资料,使其成为可利用计算机进行处理和分析的信息。代码是用来表示事物的记号,它可以用数字、字母、特殊的符号或它们之间的组合来表示。
py3study
2020/01/19
5320
Python_实用入门篇_05
python基础-字符串与编码
转载于:廖雪峰的官方网站-python教程 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机
昱良
2018/04/08
1K0
python基础-字符串与编码
Python 基础知识
可以用单引号和双引号表示,比如:'abc',"xyz",''或""本身只是一种表示方式,不是字符串的一部分
AntDream
2024/06/13
1180
Python 基础知识
Python学习笔记(一)——Python基础
本文是廖雪峰的Python教程的笔记,主要是摘抄一些重点。所以我把他划分到转载里。侵删。
蛮三刀酱
2019/09/10
5460
Python学习笔记(一)——Python基础
python字符编码
近期接触到python的编码相关的东西,发现自己了解的不是太系统,故通过搜索资料做了一些总结。
py3study
2020/01/13
1.7K0
内置函数 -- bytes -- 字节码与字符串相互转换
1. 返回值为一个新的不可修改字节数组,每个数字元素都必须在0 - 255范围内,是bytearray函数的具有相同的行为,差别仅仅是返回的字节数组不可修改。
用户7798898
2020/09/27
1.1K0
Python(一)
从本篇开始,我们将要学习关于 Python 的基础知识以及高阶知识,尽量涉及到有关 Python 的方方面面。
1ess
2021/11/01
8570
Python文件读写、StringIO和BytesIO
很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。
Python学习者
2023/05/24
3620
浅析Python3中的bytes和str
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。
py3study
2020/01/03
2.7K0
一篇文章理清python的字符编码
最近在用python接受网络数据的时候,输出时总是遇到编码的问题,虽然都解决了,但深刻意识到自己其实对python的编码并没有清晰的认识,所以才会遇到这样的问题。今天就此总结一下,以免日后夜长梦多。
梦飞
2022/06/23
8260
一篇文章理清python的字符编码
相关推荐
Python学习总结4--字符串和编码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验