字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
name = '二狗子'
habby = '撩妹'
job = '程序猿'
1、访问字符串中的值
可以根据索引去获取相应的字符串内的值,示例如下:
>>my_str = 'hello python'
>>print(my_str[0])
>>print(my_str[1])
>>print(my_str[8])
#输出结果为:
h
e
t
2、根据数据获取索引值
既然能通过索引获取数据,那么同样能通过数据获取相应的索引值,使用index()、rindex()、find()、rfind()方法。
语法:
- index()、rindex(): str.index(str, beg = 0, end = len(string))
- find()、rfind():str.find(str, beg = 0, end = len(string))
参数:
- str -- 指定检索的字符串
- beg -- 开始索引值,默认为0
- end -- 结束索引值,默认为字符串长度
示例如下:
>>my_str = 'hello python'
#通过index()方法进行查找
#从左侧开始查找,拿到查找的第一个数据
>>result01 = my_str.index('e')
>>print(result)
>>result02 = my_str.index('l')
>>print(result)
#输出结果为:
1
2
#从右侧开始查找,拿到查找的第一个数据
>>result03 = my_str.rindex('l')
>>print(result03)
#输出结果为:
3
#通过find()方法进行查找
#从左侧开始查找,拿到查找的第一个数据
>>result04 = my_str.find('e')
>>print(result04)
#输出结果为:
1
#从右侧开始查找,拿到查找的第一个数据
>>result05 = my_str.rfind('l')
>>print(result05)
#输出结果为:
3
注意:使用index()方法如果没有找到指定字符串会报错,使用find()方法如果没找到指定字符串就返回 -1
3、字符串的长度、字符串出现的次数
语法:
- len(my_str) ----只有一个参数即要获取长度的对象(不只是获取字符串的长度还可以获取其他如列表、元组等)
- str.count(sub, start= 0,end=len(string))
参数:
- sub -- 搜索的子字符串
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
>>my_str = 'hello python'
#字符串的长度使用len()方法
>>print(len(my_str))
#输出结果为
12
#字符串出现的次数使用count()方法
>>print(count('l'))
#输出结果为
2
4、替换字符串
语法:
- str.replace(原字符串, 新字符串,替换个数)——参数根据字面意思就能理解不需要做解释了吧
注意:这里需要特别注意的一点是,由于字符串是不可变类型,当我们定义好了一个字符串并赋值之后,通过replace()方法去替换字符串,那么原来的字符串是不会改变的,替换之后会得到一个新的字符串。如下示例:
>>old_string = 'hello python'
>>new_string = old_string.replace('l','x',2)#replace()方法替换后得到新字符串并赋值给变量new_string,替换个数为2
>>print(old_string,new_string)
#输出结果为:
hello python hexxo python #我们发现虽然我们使用了replace(),但是原来的字符串并没有发生改变
5、字符串分割
语法:
- str.split(str,num) --- 分割之后返回字符串列表。
参数
- str -- 分隔符,默认为所有空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数。默认为-1,即分割所有。
>>my_str = 'how are you fine thanks and you i am fine too'
>>list01 = my_str.split()#不加参数,默认以空格分割,分割所有
>>list03 = my_str.split('f')#以f为分隔符分割,默认分割所有
>>list02 = my_str.split('a',1)#以a为分隔符分割,分割1次
>>print(list01)
>>print(list02)
>>print(list03)
#输出结果为
['how', 'are', 'you', 'fine', 'thanks', 'and', 'you', 'i', 'am', 'fine', 'too']
['how ', 're you fine thanks and you i am fine too']
['how are you ', 'ine thanks and you i am ', 'ine too']
6、去掉开头和结尾指定字符
strip()方法用于溢出字符串头尾指定的字符(默认为空格)或字符序列,返回新的字符串。
注意:改方法只能删除开头或结尾的字符,不能删除中间部分的字符。
语法:
- str.strip([chars]) 默认两侧
- str.rstrip([chars])右侧
- str.lstrip([chars])左侧
参数:
- chars -- 移除字符串头尾指定的字符序列。
>>my_str = '*****hello python*****'
>>print(my_str.strip('*'))
>>print(my_str.rstrip('*'))
>>print(my_str.lstrip('*'))
#输出结果为:
hello python
*****hello python
hello python*****
7、字符串切片
切片操作可以从一个字符串中获取子字符串(字符串中的一部分)。使用一对方括号、起始偏移量(就是开始的地方)、终止偏移量以及步长来定义一个分片。
格式:[start:end:step]
- [:]提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
- [2:]提取从第2位到结尾的字符串
- [:8]提取从开头到第8位的字符串
- [2:8]从第2提取到第8
- [2:8:2]从第2提取到第8,没2步提取一个
几个特别的示例:
>>my_str = 'dfegekjlji'
#提取最后N个字符
>>print(my_str[-4:])
#从开头到结尾,步长为3
>>print(my_str[::3])
#将字符串倒转
>>print(my_str[::-1])
#输出结果为:
jlji
dgji
ijljkegefd
8、其他
- str.isalpha() --- 检测字符串是否只由字母组成
- str.isdigit() --- 检测字符串是否只由数字组成
- str.isalnum() --- 检测字符串是否有字母和数字组成