Python之字符处理方法大全

我们这里以一道某一年小米的面试题开篇:

  • 问题:输入字符串‘hello xiao mi’,输出‘mi xiao hello‘
    问题倒是不难,但是如果不掌握一些字符串处理方法,那就不好说了 ??,本文中在涉及相关方法的时候,会教你使用一条命令轻松搞定这道题

1.字符串处理基本操作

我们以字符串【s = ‘hello’】为例

  • 索引
    索引值默认从0开始------>h(0)e(1)l(2)l(3)o(4)
    print(s[1])
    print(s[0])
    在这里插入图片描述

  • 切片
    print(s[0:3]) #切片的规则: s[start:end:step] 从start开始,到end-1结束,step:步长

    print(s[0:4:2])
    在这里插入图片描述

    #显示所有字符
    print(s[:])

    #显示前3个字符
    print(s[:3])

    #字符串逆序输出
    print(s[::-1])

    #除了第一个字符以外,其他全部输出
    print(s[1:])
    在这里插入图片描述

  • 重复
    print( s * 10)
    在这里插入图片描述

  • 字符串的拼接
    print(‘hello’ + ’ ’ + ‘world’)
    在这里插入图片描述

  • 成员操作符
    print(‘h’ in s)
    print(‘q’ in s)
    在这里插入图片描述

2.其他方法总结

用法功能
capitalize()把字符串的第一个字符改为大写
casefold()把整个字符串的所有字符改为小写
center(width)将字符串居中,并使用空格填充至长度 width 的新字符串
count(sub[, start[, end]])返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
encode(encoding=‘utf-8’, errors=‘strict’)以 encoding 指定的编码格式对字符串进行编码。
endswith(sub[, start[, end]])检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
expandtabs([tabsize=8])把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
find(sub[, start[, end]])检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
index(sub[, start[, end]])跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
isdecimal()如果字符串只包含十进制数字则返回 True,否则返回 False。
isdigit()如果字符串只包含数字则返回 True,否则返回 False。
islower()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False。
isspace()如果字符串中只包含空格,则返回 True,否则返回 False。
istitle()如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
isupper()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
join(sub)以字符串作为分隔符,插入到 sub 中所有的字符之间。
ljust(width)返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
lower()转换字符串中所有大写字符为小写。
lstrip()去掉字符串左边的所有空格
partition(sub)找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 (‘原字符串’, ‘’, ‘’)
replace(old, new[, count])把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
rfind(sub[, start[, end]])类似于 find() 方法,不过是从右边开始查找。
rindex(sub[, start[, end]])类似于 index() 方法,不过是从右边开始。
rjust(width)返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
rpartition(sub)类似于 partition() 方法,不过是从右边开始查找。
rstrip()删除字符串末尾的空格。
split(sep=None, maxsplit=-1)不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
splitlines(([keepends]))在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。。
startswith(prefix[, start[, end]])检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
strip([chars])删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
swapcase()翻转字符串中的大小写。
title()返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
translate(table)根据 table 的规则(可以由 str.maketrans(‘a’, ‘b’) 定制)转换字符串中的字符。
upper()转换字符串中的所有小写字符为大写。
zfill(width)返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。

挑两条进行示范:

<1>字符串匹配开头和结尾

  • startswith
  • endswith
    在这里插入图片描述

<2>

  • strip
    删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。

  • rstrip
    删除字符串末尾的空格

  • lstrip
    去掉字符串左边的所有空格

在这里插入图片描述

<3>

  • isalnum
    如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。

  • isalpha
    如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。

  • isdecimal
    如果字符串只包含十进制数字则返回 True,否则返回 False。

  • isdigit
    如果字符串只包含数字则返回 True,否则返回 False。

练习题:

  • 变量名是否合法:
    1.变量名只能由字母、数字、下划线组成
    2.只能以字母或下划线开头

在这里插入图片描述

<4>

  • find
    找到子串,并返回最小的索引

  • rfind
    找到子串,并返回最大的索引值

  • replace
    字符的替换

在这里插入图片描述

<5>字符串的对齐

print('学生管理系统'.center(30))
print('学生管理系统'.center(30,'*'))
print('学生管理系统'.center(30,'@'))
print('学生管理系统'.ljust(30,'*'))
print('学生管理系统'.rjust(30,'*'))

在这里插入图片描述

<6>字符串的统计

  • count
    统计指定字符出现的次数
  • len
    统计整个字符串的长度

在这里插入图片描述

<7>字符串的分离与连接

  • split(sep=None, maxsplit=-1)
    不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。

  • join(sub)
    以字符串作为分隔符,插入到 sub 中所有的字符之间。

在这里插入图片描述

等等,到这里是不是突然灵光一闪,小米的面试题有思路了,接下来我们试着做一下:

1.首先我们将输入的字符串(split不带参数)以空格作为分隔符切片字符串——【input().split()】
2.然后【::-1】倒序——【input().split()[::-1]】
3.再把上述结果以空格为分隔符,返回切片后的子字符串拼接的列表——【’ '.join((input().split()[::-1]))】
4.print输出

在这里插入图片描述

最后一练:

输入

They are students.
aeiou

输出

Thy r stdnts.

提示:输出结果相当于第一个字符串减去了第二个字符串

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值