一、 查找
find:左边第一个指定字符的索引(还是从左边开始数)
rfind:右边第一个指定字符的索引(还是从左边开始数)
index:左边第一个指定字符的索引(还是从左边开始数)
rindex:右边第一个指定字符的索引(还是从左边开始数)
s = 'xxx shi wo wer zi'
print(s.find('z')) # 左边第一个指定字符的索引(还是从左边开始数)
print(s.rfind('i')) # 右边第一个指定字符的索引(还是从左边开始数)
print(s.index('i')) # 左边第一个指定字符的索引(还是从左边开始数)
print(s.rindex('i')) # 右边第一个指定字符的索引(还是从左边开始数)
find和index的区别在于find找不到会返回-1 index找不到会报错
二、分割替换
count :统计字符串中有多少个指定字符
partition: 指定字符前会被分割成一个,指定字符分割成一个,指定字符后面分割出来了一个
splitlines: 字符串中有换行符才会分割
split :直接去掉所有指定字符,然后从指定字符位置分割开,加上 maxsplit :可以控制需要分割的指定字符数量
replace:括号里第一个字符是需要替换的字符,第二个字符是要被替换的字符,最后的数字可以控制需要替换的字符的数量
1 = 'xxx shi\n wo wer zi'
print(s1.splitlines()) # 字符串中有换行符才会分割
print(s.split('w')) # 直接去掉所有指定字符,然后从指定字符位置分割开
print(s.split('w', maxsplit=1)) # 加上 maxsplit 可以控制需要分割的指定字符数量
print(s.replace('x', 'c')) # 括号里第一个字符是需要替换的字符,第二个字符是要被替换的字符
print(s.replace('x', 's', 2)) # 最后的数字可以控制需要替换的字符的数量
三、对齐
center: 字符居中,后面数字是指定多少字符居中的,多余字符默认用空格填满,在数字后面是可以指定字符填充多余的字符位置
ljust: 左对齐,后面字符是是控制填充是可以指定字符填充多余的字符位置
rjust: 右对齐,后面字符是是控制填充是可以指定字符填充多余的字符位置
zfill: 将字符填充到指定长度,不足则由左边用0开始填充
s2 = 'hanhan'
print(s2.center(20)) # 字符居中,后面数字是指定多少字符居中的,多余字符默认用空格填满
print(s2.center(20, '~')) # 在数字后面是可以指定字符填充多余的字符位置
print(s2.ljust(20, '~')) # 左对齐,后面字符是是控制填充是可以指定字符填充多余的字符位置
print(s2.rjust(20, '!')) # 右对齐,后面字符是是控制填充是可以指定字符填充多余的字符位置
print(s2.zfill(20)) # 将字符填充到指定长度,不足则由左边用0开始填充
四、分割
strip:除去左右俩边的空格
rstrip:除去右边指定字符
lstrip:除去左边指定字符
s3 = '!!!hanhan!!!'
print(s3.strip()) # 除去左右俩边的空格
print(s3.rstrip('!')) # 除去右边指定字符
print(s3.lstrip('!')) # 除去左边指定字符
五、字符串格式化
format()用法:
1、使用位置函数
msg = '大家好我是{},今年不知道有没有{}岁了'
print(msg.format('陈鹏', 20))
print('大家好我是{},今年不知道有没有{}岁了'.format('陈鹏', 20))
"""
格式: '{}'.format() 注意字符对应字符,数字对应数字
"""
2、使用关键字参数
msg = '大家好我叫{name}!今年{age}岁了' # 关键字字符串格式化
print(msg.format(name='陈鹏', age=20))
print('大家好我叫{name}!今年{age}岁了'.format(name='陈鹏', age=20))
print('我叫{:*^5},我今年{:*<4}岁了'.format('张三丰', 59))
3、填充与格式化
"""
格式: '{:*< ^ > 5}'.format() 冒号必须要是英文冒号,<表示左对齐>表示又对齐^表示居中
后面的数字是用于指定多少字符对齐还可以设置填充符号
"""
4、精度和进制
print("长方形的宽是{:.2f}cm,高是{:.3f}cm,求长方形的面积".format(3/2, 5/3))
print('二进制{:b}'.format(10)) # 可以直接把10进制的数字转换2进制
print('八进制{:o}'.format(10)) # 可以直接把10进制的数字转换为8进制
print('十六进制{:x}'.format(10)) # 可以直接把10进制的数字转换为16进制
5、字符串变形
upper:将字符串全部大写
lower:将字符串全部小写
swapcase:将字符串大小写互换
title:将字符串当中的单词首字母大写,单词以非字母划分
capitalize:只有字符串的首字母大写
expandtabs:把制表符‘\t’转换为tab空格,tab空格默认为8个字符
s4 = 'hello Python'
print(s4.upper()) # 将字符串全部大写
print(s4.lower()) # 将字符串全部小写
print(s4.swapcase()) # 将字符串大小写互换
print(s4.title()) # 将字符串当中的单词首字母大写,单词以非字母划分
print(s4.capitalize()) # 只有字符串的首字母大写
s5 = 'hello \tPython'
print(s5.expandtabs()) # 把制表符‘\t’转换为tab空格,tab空格默认为8个字符
isalnum:判断字符串是否是由数字和字母组成
isalpha:判断字符串是否由字母组成
isdigit:判断字符是否由纯数字组成
isupper:判断字符串是否全部大写
islower:判断字符串是否全部为小写
isspace:判断字符串是否全部为空格(即是否为空)
istitle: 判断字符串是否为标题格式(即个单词首字母大写)
startswith:False 判断字符串开头是为指定字符,也可以截取判断
endswith:True 判断字符串结尾是否为指定字符,和startswith一样可以截取判断
s6 = '10a-'
print(s6.isalnum()) # 判断字符串是否是由数字和字母组成
s7 = 'hello'
print(s7.isalpha()) # 判断字符串是否由字母组成
s8 = '1314521'
print(s8.isdigit()) # 判断字符是否由纯数字组成
s9 = 'HELLO'
print(s9.isupper()) # 判断字符串是否全部大写
s10 = 'hello'
print(s10.islower()) # 判断字符串是否全部为小写
s11 = ' '
print(s11.isspace()) # 判断字符串是否全部为空格(即是否为空)
s12 = 'Hello Python'
print(s12.istitle()) # 判断字符串是否为标题格式(即个单词首字母大写)
s13 = 'hello python'
print(s13.startswith('h', 2, 4)) # False 判断字符串开头是为指定字符,也可以截取判断
print(s13.endswith('on')) # True 判断字符串结尾是否为指定字符,和startswith一样可以截取判断