1.字符串索引
我们知道通过 索引 可以访问列表里的元素,其实字符串也一样有 索引。
和列表一样,我们可以通过索引或反向索引的方式访问字符串中的字符:
name1 = '李白libai'
print(name1[3])
print(name1[-2])
#输出:
i
a
2.字符串分片
除了索引之外,字符串和列表还有很多相似之处:它们都是有序序列,都可以使用 len() 函数获取元素个数,也可以对字符串进行分片。
字符串的分片和列表的分片是一样的,我们直接来看个字符串分片的例子:
name1 = '李白libai'
print(name1[:2])
print(name1[-5:])
#输出:
李白
libai
***注意:分片超出范围是不会报错的。如:
name1 = '李白libai'
print(name1[:1000])
#输出:
李白libai
这一点和索引取值是不同的,如果索引取值超出范围将会报错。比如将上面的第二行代码改成 print(name1[100000]) 将会得到 IndexError: string index out of range(索引错误:字符串索引超出范围)的报错。
3.字符串不可变性
字符串一旦创建后是不可改变的,这个属性和元组类似,通过索引来改变字符串中元素就会报错:
name1 = '李白libai'
name1[1] = '王'
print(name1)
#TypeError: 'str' object does not support item assignment
如果我们要修改字符串内容可以使用字符串分片和拼接去生成一个新字符串:
name1 = '李白libai'
name2 = '王' +name1[1:]
print(name2)
#输出:
王白libai
4.字符串大小写转换方法
①upper()用于将字符串中的小写字母转为大写字母。
name1 = 'libai'
print(name1.upper())
#输出:
LIBAI
②lower()则是将字符串中的大写字母转为小写字母。
name2 = 'WANGWEI'
print(name2.lower())
③capitalize()将字符串的第一个字母变成大写,其他字母变小写。首字符如果是非字母则不变,其他字母变小写。
name2 = 'WANGWEI'
print(name2.capitalize())
#输出:
Wangwei
name2 = '2WANGWEI'
print(name2.capitalize())
#输出:
2wangwei
④title()将所有单词的首字母转为大写,其余字母均为小写。
name2 = 'wang wei'
print(name2.title())
#输出:
Wang Wei
⑤swapcase()用于对字符串的大小写字母进行互相转换。
name2 = 'WangWei'
print(name2.swapcase())
#输出:
wANGwEI
5.字符串的分割、组合及移除
①用于通过指定分隔符对字符串进行分割。split() 方法有两个可选参数,第一个参数为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。第二个参数为最大分割次数,默认为 -1,即不限次数。
name1 = '李 白 李 太 白'
print(name1.split())
#输出:
['李', '白', '李', '太', '白']
name1 = '李/白/李/太/白'
print(name1.split('/'))
#输出:
['李', '白', '李', '太', '白']
name1 = '李 白 李 太 白'
print(name1.split(' ',1))
#输出:
['李', '白 李 太 白']
②join()用于将序列中的元素以指定的字符连接生成一个新的字符串。join() 方法接收一个序列(列表、元组、字符串等)作为参数,. 前面的字符串用于连接符。
name1 = '李白李太白'
print('/'.join(name1))
#输出:
李/白/李/太/白
③strip()用于移除字符串开头和结尾指定的字符(默认为空字符)或字符序列。当传入一个字符串时,会将传入字符串中每个字符依次移除。
name1 = '**李白李太白****'
print(name1.strip('*'))
#输出:
李白李太白
6.定位与替换方法
①count()用于统计字符串中某个字符串出现的次数。第一个参数为要统计次数的字符串,后两个可选参数为在字符串搜索的开始与结束索引。
str1 = 'abcabcabc'
print(str1.count('b'))
print(str1.count('b',2,6))
print(str1.count('c',3))
#输出:
3
1
2
②find()用于检测字符串中是否包含子字符串,如果包含子字符串返回第一次出现的索引值,否则返回 -1。第一个参数为要查找的子字符串,后两个可选参数为在字符串搜索的开始与结束索引。
str1 = 'abcabcabc'
print(str1.find('b'))
print(str1.find('b',2,6))
print(str1.find('bc',3))
#输出:
1
4
4
③replace()用于将字符串中的指定字符串替换成别的字符串。第一个参数为被替换字符串,第二个参数为替换字符串,第三个可选参数为替换的最多次数,默认为无限次。
str1 = 'abcabcabc'
print(str1.replace('b','d'))
print(str1.replace('bc','d'))
print(str1.replace('b','d',1))
#输出:
adcadcadc
adadad
adcabcabc
7.格式化输出方法
之前我们使用 % 运算符进行字符串格式化输出,现在我们还可以使用字符串的 format() 方法达到同样的效果。
print('我叫{},今年{}岁,来自{}'.format('思思',20,'浙江'))
#输出:
我叫思思,今年20岁,来自浙江
我们还可以给占位符编号:
print('我叫{0},今年{1}岁,来自{2}'.format('思思',20,'浙江'))
#输出:
我叫思思,今年20岁,来自浙江
print('我叫{2},今年{1}岁,来自{0}'.format('浙江',20,'思思'))
#输出:
我叫思思,今年20岁,来自浙江
还可以给占位符命名:
print('我叫{name},今年{age}岁,来自{city}'.format(name='思思',age=20,city='浙江'))
#输出:
我叫思思,今年20岁,来自浙江