在Python基础01之入门中,我们学习了Python中的输入(input()
),输出(print()
)的使用,变量赋值,简单运算符的相关知识,今天一起来学习字符串的知识。
一、字符串基础
字符串是 Python 中最常用的数据类型,它是一种不可变序列。可以使用引号来创建字符串,引号可以是'单引号'"双引号" '''三单引号''', """三双引号""",单引号和双引号在使用上没什么区别,三引号可以跨行输出,引号的使用必须成对,否则会出错。
str1 = '我是单引号字符串'str2 = "我是双引号字符串"str3 = '''我是三单引号字符串'''str4 = """我是三双引号字符串"""str5 = """ _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||// \ / _||||| -:- |||||_ \ | | \\\ - /// | | | \_| ''\---/'' | | \ .-\__ `-` ___/-. / ___`. .' /--.--\ `. . __ ."" '< `.___\__/___.' >'"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / / ======`-.____`-.___\_____/___.-`____.-'====== `=---=' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 佛祖保佑 永无BUG"""print(str1)print(str2)print(str3)print(str4)print(str5)
输出效果为:
(素材来自网络)
二、转义字符和原始字符串
Python使用反斜杠"\"转义字符,要输出'doesn't','"Isn't," they said.',这样的句子,可以使用反斜杠对"'"进行转义。
常见转义字符如下:
符号 | 含义 | 符号 | 含义 |
\' | 单引号 | \r | 回车符 |
\" | 双引号 | \f | 换页符 |
\a | 系统响铃 | \o | 八进制字符 |
\b | 退格符 | \x | 十六进制字符 |
\n | 换行符 | \0 | 空字符 |
\t | 横向制表符 | \\ | 反斜杠 |
\v | 纵向制表符 |
所以在输出路径'C:\some\name'时,\n会被识别为换行,可以使用\\进行转义,但是路径(字符串)比较长的时候,如果你(懒)不希望多次输入\\时,可以使用原始字符串的方式,在引号前使用r即可。
三、字符串的连接和重复
可以使用加号(+)进行字符串的连接,通过乘号(*)重复输出字符串
四、字符串的索引
索引(S[i]
)可以获取特定偏移量(i)处的元素
- 第一个字符索引是 0
- 索引可以用负数,为负时会从右边开始数
- 单个字符是一个长度为一的字符串
- 索引值超过字符串长度,会报错
word = 'Python'word[0] # 输出Pword[-2] # 输出oword[10] # 报错
五、字符串的切片
除了索引,字符串还支持切片(S[i:j:k]
)。索引可以得到单个字符,而切片可以获取子字符串
- 省略开始索引
(i)
时默认为0,省略结束索引(j)
时默认为到字符串的结束,k
为步长,默认为1 - 切片的开始总是被包括在结果中,而结束不被包括
- 索引值超过字符串长度,会被自动处理
word = 'Python'word[:]Out[3]: 'Python'word[1:]Out[4]: 'ython'word[:3]Out[5]: 'Pyt'word[:-1]Out[6]: 'Pytho'word[1:3]Out[7]: 'yt'word[1:100]Out[8]: 'ython'word[1::2]Out[9]: 'yhn'word[::2]Out[10]: 'Pto'word[::-1]Out[11]: 'nohtyP'word[5:2:-1]Out[12]: 'noh'
通过下表可以更加容易理解索引和切片
P | y | t | h | o | n | |
正向 | 0 | 1 | 2 | 3 | 4 | 5 |
反向 | -6 | -5 | -4 | -3 | -2 | -1 |
六、字符串的方法
内建函数 len()
返回一个字符串的长度
常用的字符串方法为:
方法 | 描述 | |
| 返回原字符串的副本,其首个字符大写,其余为小写。 | |
| 返回长度为 width 的字符串,原字符串在其正中。使用指定的 fillchar 填充两边的空位 | |
| 子字符串 sub 在 [start, end] 范围内非重叠出现的次数 | |
| 子字符串 sub 在 s[start:end] 切片内被找到的最小索引 | |
| 类似于 find(),但在找不到子类时会引发 ValueError | |
| 返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new | |
| 返回子字符串 sub 在字符串内被找到的最大(最右)索引 | |
| 类似于 rfind(),但在子字符串 sub 未找到时会引发 ValueError | |
| 返回原字符串的副本,移除其中的末尾字符 | |
| 返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串 | |
| 返回原字符串的副本,移除其中的前导和末尾字符 | |
| 返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写 | |
| 返回原字符串的副本,其中所有区分大小写的字符 4 均转换为大写 | |
| 返回一个由 iterable 中的字符串拼接而成的字符串。 |
(上表为常见常用的字符串方法,具体使用可以查询官方文档)