购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 字符串

字符串是Python中很常见的数据结构。字符串的创建非常简单,可以通过在引号中包含字符的方式创建,单引号和双引号的效果是一样的。

Python与其他高级编程语言类似,一个反斜杠(\)加一个单一字符可以表示一个特殊字符,如\n表示换行,反斜杠用来转义。Python常用的特殊字符为

3.1.1 索引和切片

字符串属于序列。序列中的每一个元素都可以通过指定一个偏移量的方式访问。多个元素可以通过切片的方式得到。索引从0开始,依次递增,-1表示最后一个元素。

运行结果为

3.1.2 字符串中的运算符

除了索引[]和切片[:],字符串还有其他一些运算符,如加号[(+),用于字符串连接]、星号[(*),表示字符串重复]及成员运算符in和not in等。

运行结果为

需要注意的是,Python中的字符串是不允许修改的!

3.1.3 字符串格式化

Python支持格式化字符串的输出,非常类似于C语言中printf()函数的字符串格式化,使用百分号(%)进行格式化。

例如,分别使用%s、%d、%x、%f将30格式化为字符串、整数、十六进制数、浮点数,即

3.1.4 字符编码

众所周知,计算机只能识别0和1,即只能处理二进制数,要想处理字符串,就需要将字符串转换为数字。计算机采用连续的8个二进制数,也就是8个bit组成一个byte(字节),一个字节就能表示255个数字。计算机发明于美国,最早的127个字符(大小写英文字母、数字和一些符号)就可以使用不同的数字分别来代表。这个编码规则被称为ASCII码,如使用数字65代表大写字母A。

随着其他国家语言的加入,ASCII码就不够用了。为了解决这个问题,一种万国码出现了,即Unicode编码。Unicode编码对所有语言的字符都采用两个字节表示。这样就不会有乱码问题了。

虽然解决了乱码问题,但是很快又发现了新的问题。本来一个字节就可以表示英文字母,但是为了统一强制,使用两个字节表示英文字母。如果文本中的英文字母居多,则Unicode编码就会比ASCII码额外多出一倍的存储空间,非常浪费。

为了节省空间,UTF-8(可变长度字符)编码应运而生。顾名思义,UTF-8编码的长度是可变的,将常用的英文字母编码成1个字节,汉字编码成3个字节,非常灵活,大大节省了计算机的存储空间。

基于各种编码的不同特点,字符串在计算机内存中统一使用Unicode编码,当字符串用来存储和传输时,则转换为UTF-8编码。

编解码

在Python3中,字符串用Unicode编码。在内存中,一个字符对应多个字节。当字符串用来存储和传输时,需要转换为bytes类型。Python中的bytes类型用b'xxx'表示,即

用Unicode编码的字符串可以使用encode()方法转换为bytes类型,即

反过来,从存储介质和传输流中获取的bytes类型需要使用decode()方法转换为字符串,即 o4D9jFBCyqQlWYXgTVC4mZ0A20lgbQkGAeT+WqO2ZuEy3m+drqsAeu+LTCki3Qe0

点击中间区域
呼出菜单
上一章
目录
下一章
×