字符串操作方法
1 字符串
>>> print("hello,world!") hello,world!
"hello,world!" 就是一个字符串(string)
单引号(' '),双引号(" "),三引号(""" """)的区别。
(1) 字符串中间不包含单引号时,单引号和双引号结果一样
>>> print('hello,world!') hello,world! >>> print("hello,world!") hello,world!
(2)字符串中间包含单引号时,必须使用双引号或者三引号
>>> print("Let's go") Let's go >>> print("""Let's go""") Let's go
(3)要求多行输出时,只能使用三引号
>>> msg="""登鹳雀楼_百度汉语 作者:王之涣 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。"""
>>> print(msg) 登鹳雀楼_百度汉语 作者:王之涣 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼
2 字符串拼接(字符串加法)
msg3='小明,早上 ' msg4='好' print(msg3+msg4)
结果为:
1
|
小明,早上 好 |
3 字符串乘法
字符串*n,相当于把最字符串输出n次。
msg3="哈哈" print(msg3*2)
结果为:
哈哈哈哈 |
4字符串索引取值
str='pneumonoultramicroscopicsilicovolcanoconiosis'
取索引为0的字符,既就是字符串中的第一个字符
s1=str[0] print(s1) print(s1,type(s1))
结果:
p p <class 'str'>
取索引为2的字符
s2=str[2] print(s2) 结果:e
取字符串最后一个字符,可正向数,但是字符串很长的话,就不现实。
s3=str[-1] print(s3) 结果:s
取倒数第四个字符
s4=str[-4] print(s4) 结果为:o
5 字符串切片
str='pneumonoultramicroscopicsilicovolcanoconiosis'
注意:切片顾头不顾尾
取前四个字符,既就是索引为0-3的字符
s5=str[0:4] print(s5) 结果:pneu
取前6个字符:
s6=str[:6] print(s6) 结果为: pneumo
取所有字符
s7=str[:] print(s7) 结果为: pneumonoultramicroscopicsilicovolcanoconiosis
按步长取字符
取索引为1、3、5、7、9字符
s8=str[1:10:2] print(s8) 结果为:nuool
取索引为0、2、4…..16的字符
s9=str[0:16:2] print(s9) 结果为:pemnutai
print(str[14])
结果为:i
说明:由于切片顾头不顾尾,所以索引为0-16,取补偿为2,最后的一个字符是索引为14的字符。
切片:s[起始索引:结束索引+1:步长]
6 字符串的常用方法
(1)首字母大写其余全小写 capitalize()
str='iammlearningPython' s1=str.capitalize() print(s1) 结果为:Iammlearningpython
(2)字符大小写翻转 swapcase()
str='IammLearningPythoN' s2=str.swapcase() print(s2) 结果为:iAMMlEARNINGpYTHOn
(3)非字母隔开的每个单词的首字母大写 title()
str='I am learning pythoN' s3=str.title() print(s3) 结果为:I Am Learning Python
str1='I am learning*pythoN' s4=str1.title() print(s4) 结果为:I Am Learning*Python
(4)设置字符串总长度,并居中center()
设置总长度为20并居中
str='title' s5=str.center(20) print(s5) 结果为: title
用其他字符填充并居中
str='title' s6=str.center(20,'=') print(s6) 结果为:=======title========
(5)字符串全大写 upper()
str='aadgUOHYasadsg' s7=str.upper() print(s7) 结果为:AADGUOHYASADSG
(6)字符串全小写 lower()
str='aadgUOHYasadsg' s8=str.lower() print(s8) 结果为:aadguohyasadsg
(7)去除字符串前后的空格,换行符,制表符 strip()
str=' helloHello\t' s9=str.strip() print(s9) 结果为:helloHello
lstrip(),rstrip()分别为去除左边和右边的空格、换行符、制表符。
字符的替换 replace
str="wang ma zi" s10=str.replace('a','b') print(s10) 结果为:wbng mb zi
只替换指定次数
str="wang ma zi" s11=str.replace('a','b',1) print(s11) 结果为:wbng ma zi
(8)分隔 split
默认以空格分隔
str='Hello box apple' s1=str.split() print(s1) 结果为:['Hello', 'box', 'apple']
指定分隔符","
str2='Hello,box,apple' s2=str2.split(',') print(s2) 结果为:['Hello', 'box', 'apple']
字母为分隔符进行分隔
str3='Helloboxapple' s3=str3.split('b') print(s3) 结果为:['Hello', 'oxapple']
按字母为分隔符,并指定分隔次数
str4='Helloboxapple' s4=str4.split('o',2) print(s4) 结果为:['Hell', 'b', 'xapple']
(9)join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
序列为元组
str = "-" seq = ("a", "b", "c") s11=str.join(seq) print(s11) 结果为:a-b-c
序列为列表
l1 = ['alex', 'wusir', 'ritian'] s10 = '__'.join(l1) print(s10,type(s10)) 结果为:alex__wusir__ritian <class 'str'>
(10)通过元素找索引 find、index
find 找不到返回-1
index找不到会报错
str="abcdefghigklmn" f1=str.find('e') print(f1) 结果为:4
str="abcdefghigklmn" f2=str.find('r') print(f2) 结果为:-1
str="abcdefghigklmn" i1=str.index('h') print(i1) 结果为:7
str="abcdefghigklmn" i1=str.index('r') print(i1) 结果为: …… i1=str.index('r') ValueError: substring not found
(11)测量字符串长度 len()
str="asdgaggettetew" s1=len(str) print(s1) 结果为:14
(12)统计字符出现的次数 count()
str="asdgaggettetew" s2=str.count('t') print(s2) 结果为:3
(13)判断字符串是否由字母或数字组成 isalnum()
str="3512asdgag" s1=str.isalnum() print(s1) 结果为:True
(14)判断字符串是否由字母组成 isalpha(),实际上世界上所有语言的文字都是满足的,比如中文、日文.....
str="3512asdgag" s2=str.isalpha() print(s2) 结果为:False
s1="あなたの世界はa" print(s1.isalpha()) 结果为: True
(15)判断字符串是否由数字组成 isdigit()
str="3512" s3=str.isdigit() print(s3) 结果为:True
(16)同时替换多个字符
方法translate与replace一样替换字符串的特定部分,但不同的诗replace只能进行单个字符串的替换。translate方法的优势在于能够同时替换多个字符串,因此效率比replace高的多。
这个方法的用途比较多(如替换换行符或其他随平台而异的特殊字符),假设你要同时将字符c和s分别替换为k和z。
然而,使用translate必须先创建一个转换表。这个转换变指出了不同的Unicode码直接的转换关系。要创建转换表,可对字符串类型str调用方法maketrans,这个方法接受两个参数:两个长度相同的字符串,它们指定要讲第一个字符串中的每一个字符串都替换为第二个字符串中的相应字符串。
例如:
先创建转换表
table=str.maketrans('cs','kz')
如果愿意,可查看转换表的内容,但你看到的只是Unicode码点之间的映射。
>>> table
{99: 107, 115: 122}
创建转换表后。就可将其用作方法translate的参数。
>>> "this is an incredible test".translate(table) 'thiz iz an inkredible tezt'
调用maketrans时,还可提供可选的第三个参数,指定要讲那些字母删除。例如,将所有的空格删除。
>>> "this is an incredible test".translate(table) 'thizizaninkredibletezt'
(17)判断字符串是否以某个字符串开头或者结尾
>>> s='alexabc' >>> print(s.startswith('a')) True >>> print(s.startswith('alex')) True
亦可切片,从指定索引位置判断
>>> print(s.startswith('l',1)) True >>> print(s.startswith('w',4)) False
7 is系列
name = 'taibai123' print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isdigit()) #字符串只由数字组成 print(name.isupper()) #字符串是否都是大写 print(name.isspace()) #字符串是否都是空白
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!