Python的字符串操作

文章目录

前言

字符串在是一种重要的数据类型,一系列字符组成的内容通过引号(单引号或者双引号或者三引号都可以)括起来就构成了一个字符串。在Python语言中,字符串(str)也是程序内置的一个类(class),它有很多的函数和方法,可以进行字符串的处理,本文将其进行一些介绍。

一、字符串创建

我们可以用单引号双引号或者三引号括起来一些字符,就生成了一个字符串。其中三引号括起来的内容可以是多行内容。需要注意的是如果没有引号,那字符会被认为是一个变量。如

>>> str1="abc"#用双引号创建字符串
>>> print(str1) #str1是一个变量,并不是字符串
abc
>>> str2='def'#用单引号创建字符串
>>> print(str2) 
def
>>> str3='''abc 
... def
... '''#用三引号创建多行字符串
>>> print(str3) 
abc
def

二、字符串索引

字符串的索引和列表类似,此时可以将字符串看成一个列表,每个字符相当于列表的每个元素。可以用str(i)来代表第i个字符,str(i:j)来代表i到j-1的字符串切片,str(i:j:q)来代表i到j-1,step为q的字符串切片,str(-i)代表从右到左的第i个字符(注意最后一个字符i=1,和第一个字符i=0不一样)。字符串的索引例子如下

>>> str='abcdef123'
>>> str[1]#第1个字符'b'
'b'
>>> str[-1]#最后一个字符'3' 
'3'
>>> str[-2]#倒数第二个字符'2' 
'2'
>>> str[1:4]#第1到3的字符切片'bcd' 
'bcd'
>>> str[2:]#第2到最后的字符切片  
'cdef123'
>>> str[::2]#step为2的字符切片 
'ace13'
>>> str[::-1]#从右到左的字符切片 
'321fedcba'

三、字符串方法

(1)大小写转换方法

Python字符串有以下5种常用的转换大小写的方法:

方法描述
capitalize()返回新字符串,将整个字符串的首字母大写,其他字母小写
title()返回新字符串,将单词的首字母大写,其他字母小写,字符串只有1个单词和capitalize()效果一样
lower()返回新字符串,将所有字符变成小写
upper()返回新字符串,将所有字符变成大写
swapcase()返回新字符串,颠倒每个字符的大小写

 示例如下:

>>> str='heLLo woRlD'  
>>> str.capitalize()#首字母大写,其他小写
'Hello world'
>>> str.title() #所有单词的首字母大写,其他小写     
'Hello World'
>>> str.lower() #所有字母小写
'hello world'
>>> str.upper() #所有字母大写
'HELLO WORLD'
>>> str.swapcase() #颠倒大小写
'HEllO WOrLd'

(2)位置调整方法

有时候我们想要字符串居中对齐,或者左右对齐,需要用到以下几种位置调整方法:

方法描述
ljust(width,fill_char=" ")返回新字符串,字符串左对齐,宽度为width,其余用fill_char(省略了默认为空格)补全
rjust(width,fill_char=" ")返回新字符串,字符串右对齐,宽度为width,其余用fill_char(省略了默认为空格)补全
center(width,fill_char=" ")返回新字符串,字符居中对齐,宽度为width,其余用fill_char(省略了默认为空格)补全
zfill(width)f返回新字符串,宽度为width,左边用0补全

示例如下:

>>> str='abcd'
>>> str.ljust(8) #返回宽度为8的字符串,左对齐,右边默认用空格补全
'abcd    '
>>> str.ljust(8,'o') #返回宽度为8的字符串,左对齐,右边用字符'o'补全
'abcdoooo'
>>> str.rjust(8)   #返回宽度为8的字符串,右对齐,左边默认用空格补全  
'    abcd'
>>> str.rjust(8,'o') #返回宽度为8的字符串,右对齐,左边用字符'o'补全
'ooooabcd'
>>> str.center(8)  #返回宽度为8的字符串,居中对齐,两边默认用空格补全   
'  abcd  '
>>> str.center(8,'o') #返回宽度为8的字符串,居中对齐,两边用字符'o'补全
'ooabcdoo'
>>> str.zfill(8)    #返回宽度为8的字符串,右对齐,左边用0补全  
'0000abcd'

(3)删除左右字符

当我们想要删除字符串的左边或者右边的字符的时候,可以用以下几种方法:

方法描述
lstrip()返回新字符串,默认移除左边所有空格。当括号内有字符时,则移除左边所有该字符
rstrip()返回新字符串,默认移除右边所有空格。当括号内有字符时,则移除右边所有该字符
strip()返回新字符串,默认移除两边所有空格。当括号内有字符时,则移除该字符
removeprefix(prefix)返回新字符串,移除指定的prefix前缀字符
removesuffix(suffix)返回新字符串,移除指定的suffix后缀字符

例子如下:

>>> str='  abcd  '
>>> str.lstrip() #移除左边所有空格
'abcd  '
>>> str.rstrip() #移除右边所有空格
'  abcd'
>>> str.strip()  #移除两边所有空格
'abcd'
>>> str='aaabcdeaaa' 
>>> str.lstrip('a') #移除左边所有字符'a'
'bcdeaaa'
>>> str.rstrip('a') #移除右边所有字符'a'
'aaabcde'
>>> str.strip('a')  #移除两边所有字符'a'
'bcde'
>>> str.removeprefix('aaa')  #移除左边前缀字符'aaa'
'bcdeaaa'
>>> str.removesuffix('aaa')  #移除右边前缀字符'aaa'
'aaabcde'

注意str.ljust(char)和str.removeprefix(char)的效果可能不一样,当字符串左边有多个char字符时,前者会移除左边所有的char,后者只移除左边第一个char,如

>>> str='ababdef'
>>> str.removeprefix('ab') #只移除左边第一个'ab'
'abdef'
>>> str.lstrip('ab') #移除左边所有的'ab'      
'def'

(4)字符判断

当我们需要判断字符串的字符类型或者字符的内容包含什么时,可以有以下几种方法:

方法描述
startswith(char)当字符串以char开头时,返回True,否则返回False
endswith(char)当字符串以char结尾时,返回True,否则返回False
isalpha()当字符串是纯字母时,返回True,否则返回False
isnumeric()当字符串是纯数字时,返回True,否则返回False
isalnum()当字符串只有字母和数字时,返回True,否则返回False
isspace()当字符串只有空格时,返回True,否则返回False
islower()当字符串全是小写字母时,返回True,否则返回False
issuper()当字符串全是大写字母时,返回True,否则返回False
istitle()当字符串的单词首字母大写时,返回True,否则返回False

举例如下:

>>> str1='12345'
>>> str2='abcde'
>>> str3='abc123'
>>> str1.isnumeric() #str1是'12345',全部是数字所以是True
True
>>> str2.isnumeric() #str2是'abcde',不是全部是数字所以是False
False
>>> str1.isalpha() #str1是'12345',不是全部是字母所以是False
False
>>> str2.isalpha() #str2是'abcde',全部是字母所以是True
True
>>> str1.isalnum() #str1是'12345',所以是True
True
>>> str2.isalnum() #str2是'abcde',所以是True
True
>>> str3.isalnum() #str3是'abc123',全是数字或字母,所以是True
True
>>> str1.startswith('123') #str1以123开头,所以是True
True
>>> str1.startswith('124') #str1不以124开头,所以是False
False
>>> str1.endswith('345') #str1以345结尾,所以是True
True
>>> str1.endswith('245') #str1不以245结尾,所以是False
False

(5)字符串拆分和连接

     在写程序时经常需要根据某种规则拆分字符串或者连接字符串,我们可以用以下几种方法:

方法描述
split(sep)根据分隔符sep来拆分字符串,返回一个列表。当不指定sep时,默认以空格进行拆分。
partition(sep)根据分隔符sep拆分字符串,返回包含三个元素的元组:(1)分隔符前的内容,(2)分隔符,(3)分隔符后的内容。
rpartition(sep)根据分隔符sep拆分字符串,从右到左进行寻找分隔符,同样返回包含三个元素的元组:(1)分隔符前的内容,(2)分隔符,(3)分隔符后的内容。

join(iterable)

用字符串将可迭代对象iterable粘连起来,并返回一个新字符串

举例如下:

>>> str='abcDEFabcDEFabc'       
>>> str.split('DEF')  #根据'DEF'来分割字符串,返回分割结果的list
['abc', 'abc', 'abc']
>>> str.partition('DEF') #根据'DEF'来从左到右分割字符串,返回元组
('abc', 'DEF', 'abcDEFabc') #三个部分:分隔符左边部分,分隔符,右边部分
>>> str.rpartition('DEF') #根据'DEF'来从右到左分割字符串,返回元组
('abcDEFabc', 'DEF', 'abc')
>>> list=['a','b','c','d']
>>> '_'.join(list) #用下划线将list连接起来,形成一个字符串
'a_b_c_d'

(6)字符串替换方法

如果需要替换字符串的部分字符,则可以用字符串替换方法,具体用法如下:

str.replace(old,new,max_count=-1)

其中 old指的是需要被替换的字符,new是新字符,max_count指最大替换多少次,默认不写表示全部替换,

举例如下:

>>> str='aabb1122aabb3344' #定义字符串
>>> str.replace('aa','cc') #将'aa'替换成'cc',默认全部替换
'ccbb1122ccbb3344'
>>> str.replace('aa','cc',1) #将'aa'替换成'cc',最大替换1次
'ccbb1122aabb3344'
>>> str.replace('aa','cc',3)  #将'aa'替换成'cc',最大替换3次
'ccbb1122ccbb3344'


总结

以上就是Python字符串的一些介绍,包括了字符串的创建,索引,方法和函数等。Python除了自带的字符串处理方法外,还有专门的字符串处理库RE,后面会专门写文章进一步介绍,敬请期待!

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值