文章目录
- @[toc]
- 什么是字符串
- 索引
- 示例
- 索引越界
- 切片
- 语法
- 示例
- 字符串方法
- `find()`方法
- `rfind()`方法
- `count()`方法
- `replace()`方法
文章目录
- @[toc]
- 什么是字符串
- 索引
- 示例
- 索引越界
- 切片
- 语法
- 示例
- 字符串方法
- `find()`方法
- `rfind()`方法
- `count()`方法
- `replace()`方法
个人主页:丷从心
系列专栏:Python基础
什么是字符串
- 如下定义的变量
url
存储的是字符串类型的值
url = 'www.baidu.com'
print(url)
url = "www.baidu.com"
print(url)
www.baidu.com
www.baidu.com
- 单引号或双引号括起的数据就是字符串,通过
type()
函数可以查看其数据类型
url = 'www.baidu.com'
print(type(url))
url = "www.baidu.com"
print(type(url))
<class 'str'>
<class 'str'>
索引
- 索引就是标记内存空间地址的一个数字,也可称为下标
- 对于字符串
str = 'abcdef'
,索引从 0 0 0开始,在内存中的存储方式如下
索引 0 0 0 | 索引 1 1 1 | 索引 2 2 2 | 索引 3 3 3 | 索引 4 4 4 | 索引 5 5 5 |
---|---|---|---|---|---|
a a a | b b b | c c c | d d d | e e e | f f f |
- 索引也可以为负数,对于字符串
str = 'abcdef'
,索引为负数时的情况如下
索引 − 1 -1 −1 | 索引 − 2 -2 −2 | 索引 − 3 -3 −3 | 索引 − 4 -4 −4 | 索引 − 5 -5 −5 | 索引 − 6 -6 −6 |
---|---|---|---|---|---|
f f f | e e e | d d d | c c c | b b b | a a a |
示例
- 通过使用
[]
加上索引的方式获取对应索引处的数据
str = 'abcdef'
print(str[0])
print(str[1])
print(str[2])
a
b
c
str = 'abcdef'
print(str[-1])
print(str[-2])
print(str[-3])
f
e
d
索引越界
- 索引对应内存地址,是有范围的,对于字符串
str = 'abcdef'
,其索引范围为 0 0 0到 5 5 5,如果使用索引“ 6 6 6”会发生数组越界,产生异常
str = 'abcdef'
print(str[6])
Traceback (most recent call last):
File "C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】容器类型/test.py", line 3, in <module>
print(str[6])
IndexError: string index out of range
切片
- 切片就是截取操作对象中一部分数据的操作,例如对于字符串
str = 'abcdef'
,可以通过切片获取到字符串abc
语法
[起始索引:结束索引:步长]
- 选取的数据范围从“起始索引”开始,到“结束索引”的前一位结束,即不包含结束索引,步长表示选取数据的间隔,不使用步长时默认为 1 1 1
示例
- 取索引 0 0 0到 2 2 2包含的字符,不包含索引 3 3 3
str = 'abcdef'
print(str[0:3])
abc
- 如果“起始索引”为空则表示起始索引为 0 0 0
str = 'abcdef'
print(str[:3])
abc
- 如果“结束索引”为空则表示从起始索引开始一直取到最后一个索引
str = 'abcdef'
print(str[3:])
def
- 取索引 1 1 1到最后一个字符之前的字符
str = 'abcdef'
print(str[1:-1])
bcde
- 以 2 2 2为步长从索引 0 0 0开始取到最后一个索引结束
str = 'abcdef'
print(str[::2])
ace
- 以上情况都是步长为正数时的情况,如果步长为负,表示从右向左取数据,此时“起始索引”应大于“结束索引”
str = 'abcdef'
print(str[3:0:-1])
dcb
-
- 此时从右向左取到的是索引 3 3 3到索引 1 1 1包含的字符,不包含索引 0 0 0的字符
-
从最右取到最左的字符
str = 'abcdef'
print(str[::-1])
fedcba
字符串方法
find()
方法
str_obj.find(sub, start=None, end=None)
- 判断字符串
sub
是否在索引start
到索引end
内包含在字符串str_obj
中,即判断字符串sub
是否是字符串str_obj
的子串,如果是则返回字符串sub
在字符串str_obj
中在索引start
到索引end
内第一次出现处的开始索引,否则返回 − 1 -1 −1 start
和end
默认值为None
,表示从索引 0 0 0到最后一个索引结束
url = 'www.baidu.com'
print(url.find('baidu'))
print(url.find('www', 0, 2))
print(url.find('www', 0, 3))
4
-1
0
- 可以看到,取值范围仍然不含索引
end
,只到索引end
前一位的数据
rfind()
方法
str_obj.rfind(sub, start=None, end=None)
- 与
find()
方法类似,只是从最右侧开始查找,返回字符串从最右侧第一次出现处的开始索引
url = 'www.baidu.baidu.com'
print(url.rfind('baidu'))
print(url.find('baidu'))
10
4
count()
方法
str_obj.count(sub, start=None, end=None)
- 返回字符串
sub
在索引start
到索引end
内在字符串str_obj
中出现的次数
url = 'www.baidu.baidu.com'
print(url.count('baidu'))
2
replace()
方法
str_obj.replace(str1, str2, count=None)
- 将字符串
str_obj
中的子串str1
替换为字符串str2
,不超过conut
次 count
默认值为None
,表示将字符串str_obj
中的子串str1
全部替换为字符串str2
url = 'www.baidu.baidu.baidu.com'
print(url.replace('baidu', 'goole', 2))
www.goole.goole.baidu.com