字符串常用的方法

  • capitalize 字符串首字母大写
  • title 每个单词的首字母大写
  • upper 将所有字母变为大写
  • lower 将所有字母变为小写
  • swapcase 大小写互换
  • len 计算字符串的长度
  • find 查找某个字符串第一次出现的索引的位置,如果找不到则返回-1,字符串.find(“字符”,开始索引,结束索引)注意:结束索引是取不到的
  • index与find功能相同,但index找不到的话程序会报错
  • startswith 判断是否以某个字符或字符串为开头的。startswith(“字符”,开始索引,结束索引),返回一个布尔值
  • endswith 判断是否以某个字符或字符串为结尾的。
  • strip去掉字符串首尾的空格,strip("#"),也可以去掉指定字符,类似的方法rstriplstrip分别对应的功能为去掉右侧和左侧的指定字符,不指定默认为空格。
  • split 将字符串切按指定字符割为列表,例如s = “2020-7-13” s.split("-")得到的结果为:[‘2020’, ‘7’, ‘13’],并且可以指定切割的次数。如:s.split("-",1) 结果为:[‘2020’, ‘7-13’],这个方法默认的分割字符为空格。
  • replace替换,把字符串的旧字符换成新字符
    “”“replace(要替换的字符,替换成什么,替换的次数)”""
  • join 按某字符将列表拼接成字符串(容器类型都可)。例如:lst = [‘you’, ‘can’, ‘you’, ‘up’, ‘no’, ‘can’, ‘no’, ‘bb’]
    res = “-”.join(lst)
    结果为:you-can-you-up-no-can-no-bb

字符串格式化输出format

str.format()

  1. 顺序传参,按照format()中的参数顺序对应字符串中{}。
  2. 关键字传参,format()中的参数为键值对,如 “ayan”=22,在字符串花括号中标识ayan即可对应相应的值。
  3. 索引传参,format中只能用正向的索引下标,不能用逆向的索引。在字符串中{}中可以直接放format()中的顺序直接用索引。例如:’{0} love {1}’.format(“ayan”,“marry”)
  4. 容器数据类型(元组或者列表)传参,字典类型键值不用加引号。
  5. format的填充符号的使用( ^ > < ):
^  原字符串居中
	>  原字符串居右
	<  原字符串居左
	
	{who:*^10}
	who : 关键字参数
	*   : 要填充的字符
	^   : 原字符串居中
	10  : 总长度 = 原字符串长度 + 填充字符长度

示例

strvar = "{who:*^10}在{where:>>10},{do:!<10}".format(who="ayan",where="room",do="code")
#运行结果
***ayan***在>>>>>>room,code!!!!!!
  1. 进制转换等特殊符号的使用( :d :f : s : , )

:d 整型占位符 (要求类型必须是整型),如果不是整形的话程序会抛出异常,这种是机制是强制性的。

stevar = "这本书{:d}元".format(100)
#运行结果
这本书58元

:f 浮点型占位符 (要求类型必须是浮点型),:.2f 小数点保留2位
: s 字符串占位符 (要求类型必须是字符串)
:, 金钱占位符,以1000为单位用逗号隔开

strvar = "{:,}".format(123456789)
print(strvar)
#运行结果:
123,456,789

列表相关的操作

列表在底层是用可变长数组实现的,
(1)列表的拼接 (同元组)

lst1 = [1,2,3]
lst2 = [4,5,6,6]
res = lst1 + lst2
print(res)
#运行结果
[1, 2, 3, 4, 5, 6, 6]

(2)列表的重复 (同元组)

res = lst1 * 3
print(res)
#运行结果
[1, 2, 3, 1, 2, 3, 1, 2, 3]

(3)列表的切片 (同元组)
语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到列表的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
(5)[:]或[::] 截取所有列表

lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","汉钟离"]

(1)[开始索引:] 从开始索引截取到列表的最后

res = lst[2:]
print(res)
#运行结果
['铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子', '汉钟离']

(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)

res = lst[:4]
print(res)
#运行结果
['吕洞宾', '何仙姑', '铁拐李', '曹国舅']

(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)

res = lst[4:6]
print(res)
#运行结果
['张果老', '蓝采和']

(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
正向截取

res = lst[::2] # 0 2 4 6 8  ... 
print(res)
#运行结果
['吕洞宾', '铁拐李', '张果老', '韩湘子']

逆向截取

res = lst[::-2] # -1 -3 -5 -7 -9
print(res)
#运行结果
['汉钟离', '蓝采和', '曹国舅', '何仙姑']

(5)[:]或[::] 截取所有列表

res = lst[:]
res = lst[::]
print(res)
#运行结果
['吕洞宾', '何仙姑', '铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子', '汉钟离']

(4)列表的获取 (同元组)
0 1 2 3 4 5 6 7
lst = [“吕洞宾”,“何仙姑”,“铁拐李”,“曹国舅”,“张果老”,“蓝采和”,“韩湘子”,“王文”]
-8 -7 -6 -5 -4 -3 -2 -1

res = lst[7]
res = lst[-1]
print(res)

(5)列表的修改 ( 可切片 )

要求的数据类型是
可迭代性数据(容器类型数据,range对象,迭代器)

lst = [“吕洞宾”,“何仙姑”,“铁拐李”,“曹国舅”,“张果老”,“蓝采和”,“韩湘子”,“汉钟离”]

利用切片可以一次修改多个元素,没有个数上的限制

lst[1:3] = "abcd"
print(lst)
lst[3:5] = ["kkk","zzz","eee"]
print(lst)
#运行结果
['吕洞宾', 'a', 'b', 'c', 'd', '曹国舅', '张果老', '蓝采和', '韩湘子', '汉钟离']
['吕洞宾', 'a', 'b', 'kkk', 'zzz', 'eee', '曹国舅', '张果老', '蓝采和', '韩湘子', '汉钟离']

切片配合步长,切出多少个元素,修改多少个元素,要注意的是这种修改方式赋值符号前后的值的数量要对应,否则会报错

lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","汉钟离"]
res = lst[::2]#吕洞宾  铁拐李 张果老 韩湘子
 lst[::2] = "abcd"
lst[::2] = range(1,5) # 0 2 4 6 8 10 .....
print(lst,"<==>")
#运行结果
['a', '何仙姑', 'b', '曹国舅', 'c', '蓝采和', 'd', '汉钟离']
[1, '何仙姑', 2, '曹国舅', 3, '蓝采和', 4, '汉钟离'] <==>

(6)列表的删除 ( 可切片 )

lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","汉钟离"]
del lst[-1]
print(lst)
#运行结果
['吕洞宾', '何仙姑', '铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子']

删除的是变量res本身,不是列表中的元素,这种在程序运行中,拷贝了一个值的副本与res绑定,del删掉的是res和副本的绑定关系。

res = lst[-1]
del res
print(lst)
lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","汉钟离"]
del lst[:2]
print(lst)
del lst[::3] # 0 3 6 9 12 ...
print(lst)
#运行结果
['铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子', '汉钟离']
['曹国舅', '张果老', '韩湘子', '汉钟离']
#解析:在第一轮删除中,删掉了0,1两个索引对应的值“吕洞宾”“何仙姑”,后面的元素成为新的0号,接着按照步长来删除,删除掉了“铁拐李”“蓝采和”

元组中的列表,里面的元素可以修改,元组相当与一个不可变数组,索引对应的值是不可变的,但是其四号索引的值是一个指针指针指向的值是可便的,所以对应的列表是可变的。

tup = (1,2,3,[4,5,6,(7,8,9)])
tup[-1][1] = 6666
print(tup)
#运行结果
(1, 2, 3, [4, 6666, 6, (7, 8, 9)])