Python教程

廖雪峰Python教程知识点整理归纳(2):字符串与编码

本文主要是介绍廖雪峰Python教程知识点整理归纳(2):字符串与编码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

转载请注明地址:https://www.cnblogs.com/cynthius-phi/p/15186921.html

本文整理自:https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896

 

字符编码

 

首先,有几种字符集:ASCII、Unicode、UTF-8。同样的一个字符,在其所能够出现的所有字符集中,都具有一个编码

ASCII字符集是最小的,对应的大致是英文需要使用的各种字符(大致就是你键盘上能看见的那些字符),以及\n、\b、\a这样的一些基本的在计算机中起特殊作用的字符。ASCII字符的编码,以及存储在内存中时,空间占用为1字节。

Unicode字符集就还包含了其他各种语言所需使用的字符,当然也包括中文(以及日、韩等)所需使用的汉字。空间占用:一般2字节,很生僻的要4字节。所有的ASCII字符都是Unicode字符,它们的ASCII和Unicode编码也是相同的。但也存在许多非ASCII的Unicode字符。(为方便,下文中,前者一律称为“ASCII字符”,后者则称“Unicode字符”。)

UTF-8字符集中的字符与Unicode字符相同,但编码方式不一样。UTF-8字符集中字符所占内存空间不固定,ASCII字符只占1字节(与ASCII编码时情况相同),而汉字(Unicode字符)一般占3字节。设计的初衷是,如果一篇文章中大多数字符都是ASCII字符(但也有少数Unicode字符),按UTF-8存储就可以省空间,并且不会“坏掉”Unicode字符了。

 

Python的字符串

 

Python 3中,字符串以Unicode编码。

 

字符的基础知识

 

ord()和chr()

 

ord()用来获得字符的Unicode编码,chr()用来获得相应Unicode编码的字符。

 

\u

 

可以用\u####(#表数字)来指定字符,其中####为该字符的16进制Unicode编码。注意一定要4个数字。

 

str与bytes

 

bytes也是一种Python数据类型,用于存储一系列的字节

 

表示

 

用b' '表示一个bytes类型的数据,如:b'ABC'。这与字符串的表示类似。

 

str转bytes:方法encode()

 

str有方法encode(),可以把自己转换(编码)为bytes。encode()还要求提供一个参数:编码方式,即使用哪套编码。常见的有两种:'ascii'和'utf-8'。

 

可能遇见的错误:将Unicode字符编码为ASCII。这样是会报错的(UnicodeEncodeError)。

 

bytes转str:方法decode()

 

bytes也有方法decode(),将自己转换(解码)为str。decode()同样也要求提供一个参数,与encode()同理。

 

可能遇见的错误:bytes中包含无法解码的字节。这样是会报错的(UnicodeDecodeError)。(但此时可以再传入一个参数errors='ignore'来忽略错误的字节。)

 

len()

 

对于str,函数len()计算其字符数;对于bytes,函数len()计算其字节数。

 

最后

 

如果要多次进行str/bytes间的转化,为避免乱码,应坚持使用UTF-8。

 

许多Python代码——在含有Unicode字符时——都会在开始出加入下面的2行注释:

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

 

这是为了防止Unicode字符被错误处理(第一行给Linux / OS X的,我就不说了;第二行告诉Python按UTF-8处理源代码)。不过注意,光是这样还是不够的,还需要在文本编辑器中指定使用UTF-8。

 

格式化

 

Python有3种方法对字符串进行格式化:%、format()和f字符串。略。

 

这篇关于廖雪峰Python教程知识点整理归纳(2):字符串与编码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!