Python 字符串常用方法总结
# 学习前置条件
1、 注意:对字符串的操作方法都不会改变原来字符串的值,
2、输出结果:中的 | 代表光标位置方便理解
3、注意:学会举一反三,都可以指定去除值哈,不做穷举
一,去除首尾空格和特殊符号
name = " xx 刘艳xx "
1、去除首尾空格和换行符
print(name.strip() + "|")
# 输出结果:xx 刘艳xx|
2、去除首尾某个字符串
print(name.strip('xx') + "|")
# 输出结果: xx 刘艳xx |
3、去掉左边的空格和换行符
print(name.lstrip() + "|")
# 输出结果:xx 刘艳xx |
4、去掉右边的空格和换行符
print(name.rstrip() + "|")
# 输出结果: xx 刘艳xx|
二、字符串的搜索和替换
name = "mm刘艳xx"
1、查找某个字符在字符串里面出现的次数
print(name.count('x'))
# 输出结果:2
2、首字母大写
print(name.capitalize())
# 输出结果:Mm刘艳xx
3、把字符串放中间,两边用- 补齐10位
print(name.center(10, '-'))
# 输出结果:--mm刘艳xx--
4、找到这个字符返回下标,多个字符相同时返回第一个;不存在的字符返回-1
print(name.find('uu'))
print(name.find('x'))
# 输出结果:-1
# 输出结果:4
5、找到这个字符返回下标,多个时返回第一个;不存在的字符报错
print(name.index('x'))
# 输出结果:4
# print(name.index('ttt'))
# 输出结果:报错:ValueError: substring not found 因为ttt不在变量name的值中
6、字符串替换,参数1:替换前的值 参数2:要替换后新的值
print(name.replace("xx", "hhh"))
# 输出结果:mm刘艳hhh
7、字符串格式化,老用法
print("dddd{}{}".format("你好", "刘艳"))
# 输出结果:dddd你好刘艳
8、字符串格式化,传进去的是一个字典 ---感觉没啥用
print(name.format_map({"name": "刘艳"}))
# 输出结果: mm刘艳xx
9、字符串格式化,对齐,补位
# 左对其< 右对其> 中间对齐^
# 代码中 {:.2f} 或 {age:.2f}中的:[.2] 意思是替换为 2 位精度的浮点数。[f]是指转的值类型是指浮点数类型
# 代码 {:<9} 中 <9 左对其不够9位补齐9位
# {age:05d} 的意思是替换为 5 个字符宽度的整数,宽度不足则使用0填充
names = "刘艳"
age = 25
print("姓名: {:<9} age {:.2f}".format(names, age))
# 输出结果:姓名: 刘艳 age 25.00
print(f"姓名: {names:>9} age {age:.2f} ages {age:05d} ")
# 输出结果:姓名: 刘艳 age 25.00 ages 00025
10、divmod()方法,使用*号查封元组
divmod(参数1, 参数1) 返回一个元组(返回参数1和2,整除和求余的值)
num1 = 10
num2 = 10
print(*divmod(num1, num2)) # 输出结果:1 0
print("第一个是num1 与 num2 相整除得到的值 : {} 第二个是num1 与 num2 求余得到的值{}".format(*divmod(num1, num2)))
# 用 * 运算符查封这两个元组,得到这两个值。
# 输出结果:第一个是num1 与 num2 相整除得到的值 : 1 第二个是num1 与 num2 求余得到的值0
print(divmod(num1, num2))
# 输出结果:(1, 0)
# print("第一个是num1 与 num2 相整除得到的值 : {} 第二个是num1 与 num2 求余得到的值{}".format(divmod(num1, num2)))
# 返回的结果只有一个元组,代码中有2个占位符需要传参
举一反三:使用*号查封元组
data = ("刘艳", "1996", "160")
print("名字:{} {}年的 身高:{}".format(*data))
# 输出结果: 名字:刘艳 1996年的 身高:160
三、字符串的测试和替换函数,返回值 True 或False
1、是否以[Red]开头
print("Red我喜欢红色".startswith("Red"))
# 输出结果:True
2、是否以[红色]结尾
print("Red我喜欢红色".endswith("红色的颜色"))
# 输出结果:False
3、是否全是字母和数字,并至少有一个字符
print("uuuu888".isalnum())
# 输出结果:True
4、是否全是字母,并至少有一个字符
print("uuuu888".isalpha())
# 输出结果:False
5、是否全是数字,并至少有一个字符
print("45666888".isdigit())
# 输出结果:True
6、是否全是空白字符,并至少有一个字符
print(" ".isspace())
# 输出结果:True
7、变量中的字母是否全是小写
print("jkdhfh".islower())
# 输出结果:True
8、变量中的字母是否全是大写
print("jkdhfh".isupper())
# 输出结果:False
9、变量中是否是首字母大写的
print("jkdhfhhhhhYYYYY".istitle())
# 输出结果:False
四、字符串的分割
1、 默认是按照空格分割,返回一个列表
print("你好 刘艳 加油 学习".split())
# 输出结果:['你好', '刘艳', '加油', '学习']
2、默认是按照空格分割,返回一个列表,这里我指定按,逗号分隔
print("你好,刘艳,加油,学习".split(','))
# 输出结果:['你好', '刘艳', '加油', '学习']
五、连接字符串
join函数的用法:' '.join( )
# 单引号之间是你想要在隔开字符的符号,可以是字母,数字、空格等其他符号, int 类型不能被连接
# 另外,join括号里只支持字符串由字符串组成的列表(字典,字符串,元组)
1、拼接列表
list1 = ['1', '20', '3', '4', '6']
print(' '.join(list1))
# 输出结果:1 20 3 4 6
2、拼接字典的key 或 value
dict1 = {'1': '2', '2': 'for', 'dd': 'df'}
print('--'.join(dict1))
# 输出结果:1--2--dd
print('--'.join(dict1.values()))
# 输出结果:2--for--df
3、拼接字符串
print('+'.join('litany'))
# 输出结果:l+i+t+a+n+y
4、拼接元组
tuple1 = ('1', '2', '3', '4')
print('*'.join(tuple1))
# 输出结果:1*2*3*4
六、截取字符串(切片)
data = "0123456789"
print(data[0:3]) # 截取第一位到第三位的字符
# 输出结果:012
print(data[:]) # 截取字符串的全部字符
# 输出结果:0123456789
print(data[6:]) # 截取第七个字符到结尾
# 输出结果:6789
print(data[:-3]) # 截取从头开始到倒数第三个字符之前
# 输出结果:0123456
print(data[2]) # 截取第三个字符
# 输出结果:2
print(data[-1]) # 截取倒数第一个字符
# 输出结果:9
print(data[::-1]) # 创造一个与原字符串顺序相反的字符串
# 输出结果:9876543210
print(data[-3:-1]) # 截取倒数第三位与倒数第一位之前的字符
# 输出结果:78
print(data[-3:]) # 截取倒数第三位到结尾
# 输出结果:789
print(data[:-5:-3]) # 逆序截取
# 输出结果:96
七、字符串大小写转换
print("name".upper()) # 转大写
# 输出结果:NAME
print("NAME AGE".lower()) # 转小写
# 输出结果:name age
print("NAME AGE".capitalize()) # 字符串首为大写,其余小写
# 输出结果:Name age
print("NAME age".swapcase()) # 大小写对换
# 输出结果:name AGE
print("namE aGe".title()) # 以分隔符为标记,首字符为大写,其余为小写
# 输出结果:Name Age
八、字符串格式输出对齐
1、生成20个字符长度,str排中间
nameA = 'stRINg lEArn'
print(nameA.center(20) + "|")
# 输出结果: stRINg lEArn |
2、生成20个字符长度,str左对齐
print(nameA.ljust(20) + "|")
# 输出结果:stRINg lEArn |
3、生成20个字符长度, str右对齐
print(nameA.rjust(20) + "|")
# 输出结果: stRINg lEArn|
4、生成20个字符长度,str右对齐,左边填充0
print(nameA.zfill(20) + "|")
# 输出结果00000000stRINg lEArn|