字符串是 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()   ---  检测字符串是否有字母和数字组成