字符串的几大处理方式与相应函数(对应视频P82,67节内容)

1. 查找计算 2. 转换 3. 填充压缩 4. 分割拼接 5. 判定

对于函数的使用,有一点需要注意:一类是属于内置函数,可以直接使用,比如len(str);一类是属于对象方法:对象.方法(参数),eg: s.find('a'),表示在'jiang'中find 出'a'这个字符。

同时需要注意,这些函数并不会改变字符串本身,只是返回一个结果而已。

eg:

s = 'jiang fan'
num = s.find('a')
print(num)#返回的是第一个a的位置,2
print(s)#并不会改变自身

学习一类函数时,必须要掌握的几个要素分别为:

函数的 作用、参数、语法以及输出结果

第一类,查找计算。除了len是内置函数外,其余的都属于对象方法类

len函数:len(s),返回字符的个数,需要注意的是,一个汉字也算一个字符,而非根据其内存计算得到的2个字符。eg:len(‘woshisz’) 返回7,len('我是sz')返回4,而不是6。len('我是sz\n')转换符仅仅只算一个字符。

find函数:

作用在于查找子字符串的下标位置,语法:find(sub, start = 0, end = len(str)),sub就是查找的对象,strat和end分别表示起始与结束的位置,查找方法是从左往右。若没有找到对应的结果,则返回 -1

eg:

num = 'jiang'.find('a')
print(num)
num2 = 'jiang fan'.find('an')
print(num2)#返回2,说明找的是第一个an,而且此时an是被看作一个整体
num3 = 'jiang fan'.find('a')
print(num3)#查找的是第一个a,也是返回2
num4 = 'jiang fan'.find('f')
print(num4)#查找f,空格也算一个字符

rfind函数:与find函数的唯一区别在于,该函数是从右往左查找字符下标。这一个 r 表示的就是right,说明从右往左

eg:

num6 = 'jiang fan'.find('a')
num7 = 'jiang fan'.rfind('a')
print(num6)#返回的是第一个a的位置,2
print(num7)#返回的是第二个a的位置,7

index函数:与find函数几乎一模一样,区别在于,找不到对应的字符串时,返回的结果是  报错 而不是像 find那样返回 -1。

对于二者返回结果的差别,可以从两个函数的本质上去理解:index函数是“获取”对象的下标,而find则是“查找”对象的下标。index无法获取到,那就会报错,而find查找不到,就会返回 -1, 告诉自己 没有找到对象。好比在袋子里找西瓜,一个是无法获取,一个是没有找到西瓜然后告诉对方自己没有找到 

rindex函数:类比rfind函数

count函数:

作用:计算子字符串出现的个数

语法:count(sub, start=0, end=len(str))

eg:

num8 = 'jiang fan'.count('a')
print(num8)#返回2

第二类,转换类

replace函数:

作用:用新的字符串替换给定字符串中旧的字符串

语法:replace(old_str, new_str, count)

意思是,用新的字符替换旧的字符,替换的字符个数为count个,如果没有表明count为多少,那就是默认全部。

eg:

s = 'jiang fan'
print(s.replace(' ',''))

这就能够去除掉所有的空字符串。

s = 'jiang fan'
print(s.replace('a','o',1))#只更换一个字符a,而非更改全部的a为o,输出结果为 jiong fan

capitalize函数:

作用:将首字母进行大写,但是并不会改变原字符串,只是返回结果。

title函数:

作用:每个单词的首字母大写。注意“每个单词”这四个字如何理解,其实就和日常理解一样

print('jiang fan-yao%jia_you'.title())#输出结果:Jiang Fan-Yao%Jia_You

也即是说,只要两个字母之间没有紧紧连着,那就能够当成两个独立的单词,比如fan-yao,fan和yao就是两个单词。

lower函数:

作用:每个  字符  都小写

upper函数:

每个字符都大写

第三类,填充压缩

ljust函数:l表示的是left

作用:运用指定的字符,将字符串填充到指定的长度,原字符串在左边

语法:ljust(width, fillchar),width表示指定的填充以后的字符长度,而fillchar表示填充字符

需要注意的是:填充的字符长度为1,而不能为2,否则会报错

eg:

print(s.ljust(12,'x'))#输出jiang fanxxx,原来的字符串长度是9,要填充到12个,所以多加了3个x

rjust函数:

与上相反,原字符串在右边

center函数:

原字符串在中间,两边均匀填充。如果不够分,那么左边填充的少一点,右边的填充多一点

lstrip函数:

作用:移除掉  原字符串 左边的 字符,默认为空字符;

strip表示 脱下 的意思

语法:lstrip(chars)

注意之处:

print('wwwwwooooo shi sz'.lstrip('wo'))#输出结果: shi sz

这儿的参数'wo',并不是仅仅只移除'wo'这一个字符,而是'w' 和 'o' 这两个字符,只要出现了就都会移除掉,一直移除w o,直到碰见第一个空格,才停止。这个wo 就像是一个字符集。

print('wowoojiang shi sz'.lstrip('wo'))#输出结果:jiang shi sz
print('jiangwowoo shi sz'.lstrip('wo'))#输出结果:jiangwowoo shi sz;发现第一个字符是j而不包含在wo这个字符集中,因此结束。
print('wojiangwoo shi sz'.lstrip('wo'))#输出结果:jiangwoo shi sz

rstrip函数:

s = '   jiang fan%'
print(s.lstrip())#输出jiang fan%
print(s.rstrip('%'))#输出   jiang fan

第四类,分割拼接

split函数:

作用:

注意:返回的是列表

语法:split(sep = , maxsplit = )

sep表示分隔符,maxsplit表示最大分割次数

eg:

info = 'sz-18-170'
result1 = info.split(sep='-')
print(result1)#['sz', '18', '170']
info = 'sz-18-170-0772-123456'
#此时,对于后面 0772开头的电话号码就需要放到一起不能根据 - 分割
result2 = info.split(sep='-', maxsplit = 3)
print(result2)#['sz', '18', '170', '0772-123456']

partition函数:

作用:根据指定的分隔符,返回 元组( ' 分隔符左侧内容', ' 分隔符 ', ' 分隔符右侧内容 ')

语法:partition(sep)

结果:若查找到分隔符,则返回元组( ' 分隔符左侧内容', ' 分隔符 ', ' 分隔符右侧内容 ');若没有找到分隔符,那么就返回元组( ' 原字符串', ' ', ' ')

eg:

result3 = info.partition('-')
print(result3)#('sz', '-', '18-170-0772-123456')

rpartition函数:

与上一个函数区别在于:从右边开始找

result3 = info.rpartition('-')
print(result3)#('sz-18-170-0772', '-', '123456')

join函数:

作用:根据指定的字符,将给定的   可迭代对象,进行拼接

语法:join(iterable); 这个iterable就是指可迭代对象,可以为元组、列表、字符串

但是注意:如果是列表这些迭代对象,里面的内容必须都为字符串才可以进行拼接

eg:

m = '-'
s = 'jiangfan'
lst = ['1','2','j','f']###这儿必须都得为字符,否则无法拼接
print(m.join(s))
print(m.join(lst))

第五类,字符判定类

isalpha函数:

作用:判断是否所有的字符均为字母;注意是所有的字符,包括空格、换行符这些都属于字符

语法:isalpha()

isdigit函数:

作用:判断是否全部都是数字

isalnum函数:

作用:判断是否全部都是    数字或者字母

startswith函数:

作用:判断字符串的前缀是否为给定的字符串

语法:startswith(prefix, start = 0, end = len(str) );prefix表示的就是前缀,start表示的是开始判定的下标,end表示结束时的下标,左闭右开

eg:

filename = '2022-6-13: 某某报告.xlsx'
print(filename.startswith('2022-6-13'))#输出:True
print(filename.startswith('22', 2, 4))#输出:True

endswith函数:

作用:判定是否以给定字符结束

语法:同上

eg:

filename = '2022-6-13: 某某报告.xlsx'
print(filename.endswith('xlsx'))#输出:True
print(filename.endswith('报告', 15))#输出:False
print(filename.endswith('xlsx', 15))#输出:True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值