第七章 字符串
1. 字符串概述
字符串是指包含若干字符的容器结构。字符串属于不可变有序序列,使用单引号、双引号、三单引号、或三双引号作为定界符,而且不同的定界符之间可以相互嵌套。
支持序列通用方法(包括双向索引、比较大小、计算长度、元素访问、切片、成员测试等操作),还支持一些字符串特有的操作方法(字符串格式化、查找、替换、排版等)。不能直接对字符串对象进行原色增加、修改与删除等操作,切片操作也只能访问其中的元素而无法使用切片来修改字符串中的字符。另外,字符串对象提供的replace()
和translate()
方法以及大量排版方法也不是队员字符串直接进行修改替换,而是返回一个新字符串作为结果。
2. 字符串编码格式
Python默认使用UTF-8编码格式,完全支持中文。在统计字符串长度时,无论是一个数字、英文字母,还是一个汉字,都按一个字符对待和处理。
除了支持Unicode编码的str类型外,Python还支持字节串类型bytes,str类型可以通过encode()
方法使用指定的字符串编码格式编码成为bytes对象,而bytes对象则可以通过decode()
方法使用指定的编码格式解码成为str字符串。
>>> type('python是个好语言')
<class 'str'>
>>> type('python是个好语言'.encode('gbk')) #编码为字节串,采用gbk编码格式
<class 'bytes'>
3. 转义字符与原始字符串
转义字符是指,在字符串中某些特定的符号前加一个斜线之后,该字符将被解释为另外一种含义,不再表示本来的字符。
转义字符 | 含义 |
---|---|
\b |
退格,把光标移动到前一列的位置 |
\f |
换页符 |
\n |
换行符 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
\\ |
一个斜线\ |
\' |
单引号’ |
\" |
双引号" |
\ooo |
3位八进制数对应的字符 |
\xhh |
2位十六进制对应的字符 |
\uhhhh |
4位十六进制数表示的Unicode字符 |
>>> from time import sleep
>>> for i in range(10):
print(i, end = '\r')
sleep(0.1)
0
1
2
3
4
5
6
7
8
9
为了避免对字符串中的转义字符进行转义,可以使用原始字符串(是指在字符串前面加上r
或R
表示原字符串,其中所有字符都是原始的含义而不转义)。
>>> path = r'C:\Windows\Hello\notme'
4. 字符串格式化
1. 使用%符号进行格式化
% [-] [+] [0] [m] [.n] 格式字符 % x
1 2 3 4 5 6 7 8 9
1. 格式标志,表示格式开始
2. 指定左对齐输出
3. 对正数加正号
4. 指定空位填0
5. 指定最小宽度
6. 指定精度
7. 指定类型
8. 格式运算符
9. 待转换的表达式
格式字符 | 说明 |
---|---|
%s | 格式化为字符串 |
%c | 单个字符 |
%d, %i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数(基底写为e) |
%E | 指数(基底写为e) |
%f, %F | 浮点数 |
%g | 指数(e)或浮点数(根据显示长度) |
%G | 指数(E)或浮点数(根据显示长度) |
%% | 格式化为一个%符号 |
使用此方式格式化字符串时,要求被格式化的内容和格式字符之间的数量和顺序都一一对应。
>>> x = 1234
>>> "%o" % x
'2322'
>>