Python字符串方法详解

这周来整理一下字符串的相关知识

  • 序列型数据

    分为四种:字符串str" “、元组tuple()、列表list[ ]、字节数据bytes b” "

    基本操作: 序列的长度len()、最大值max()、最小值min()、求和sum()

  • 序列的索引访问操作

    s[i]…………#访问系列s在索引i处的元素


  • 序列的切片操作(截取序列的一部分)

    s[i:j] 或 s[i:j:k]

    注:1. i 为序列开始下标,包含s[i].若省略,则从0开始
      2. j 为序列结束下标,不包含s[j].若省略,则直到序列结束为止
      3. k 为步长,若省略,则步长为1
      4. 下标可以是负数,如果截取范围内没有数据,则返回空序列;如果超过下标范围,不报错

  • 序列的连接、重复、成员关系操作

    x+y 连接两个序列x和y
    n * x 或 x * n 复制n次序列x
    x in s 如果x是s的字串,返回True,否则返回False

序列的成员关系操作
x in s ……………………如果为True,则表示存在
x not in s ………………如果为True,则表示不存在
s.count(x) ………………返回x在s(指定范围[start,end)中出现的次数)
s.index(x[,i[,j]]) …… 返回x在s(指定范围[i,j)中第一次出现的下标

  • 序列的比较运算操作
  • 序列的排序操作

    格式:sorted(s,key=None,reverse=False)

  • 序列拆封(赋值问题)

    1.变量个数和序列长度相等时:
    变量1,变量2,……,变量n=系列或可迭代对象
    2.变量个数和序列长度不等,使用 *变量 ,将多个值作为整体赋给新变量

    3.使用临时变量

参考文章点击此处


字符串方法

字符串的类型判断

str.isdigit()  是否全为数字
str.isdecimal() 是否只包含十进制数字字符
str.isnumeric() 是否只包含数字字符
对于非Unicode字符串,上述三个方法是等价的

str.isalpha()  是否全为字母
str.isalnum()  是否全为字母或数字

str.islower()  是否全部为小写
str.isupper()  是否全部为大写
str.istitle()  是否为标题,即个单词首字母大写
注意:istitle() 判断时会对每个单词的首字母边界判断

str.isspace() 判断字符串是否是空白(空格、制表符、换行符等)字符,没有任何字符是不算是空白
str.isidentifier() 是否满足标识符定义规则
str.isprintable() 是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)



判断是否满足标识符定义规则 标识符定义规则为:只能是字母或下划线开头,不能包含除数字、字母和下划线以外的任何字

大小写转换

字符串的填充与对齐

str.center(wideth[, fillchar]) 将字符串居中,左右两边使用 fillchar 进行填充,使得整个字符串的长度为 width

str.ljust(wideth[, fillchar]) 左对齐
str.rjust(wideth[, fillchar]) 右对齐
ljust() 使用 fillchar 填充在字符串S的右边,使得整体长度为width。rjust() 则是填充在左边。如果不指定fillchar,则默认使用空格填充。如果width小于或等于字符串S的长度,则无法填充,直接返回字符串S(不会创建新字符串对象)

str.zfill(width) 用 0 填充在字符串S的左边使其长度为width。如果S前有正负号+/-,则 0 填充在这两个符号的后面,且符号也算入长度。如果width小于或等于S的长度,则无法填充,直接返回S本身(不会创建新字符串对象)

str.expandtabs([tabsize]) 将字符串中的制表符扩展为若干个空格,tabsize默认为8

字符串的的修剪

str.strip([chars])
str.lstrip([chars])
str.rstrip([chars])
分别是移除左右两边、左边、右边的字符chars。
如果不指定chars或者指定为None,则默认移除空白(空格、制表符、换行符)

唯一需要注意的是,chars可以是多个字符序列。在移除时,只要是这个序列中的字符,都会被移除
   

字符串的测试与查找:

str.startswith(prefix[, start[, end]])
str.endswith(suffix[, start[, end]])

 endswith() 检查字符串str是否以suffix结尾,返回布尔值的True和False。suffix可以是一个元组。可以指定起始start和结尾end的搜索边界
 同理startswith() 用来判断字符串str是否是以prefix开头

str.count(sub[, start[, end]])

 返回字符串str中字串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界

str.find(sub[, start[, end]])
在str.rfind(sub[, start[, end]])
str.index(sub[, start[, end]])
str.rindex(sub[, start[, end]])

 find()搜索字符串S中是否包含字串sub,如果包含,则返回sub的索引位置,否则返回“-1”。可以指定其实start和结束end的搜索位置
 index() 和 find() 一样,唯一不同点在于当找不到字串时,抛出ValueError错误
 rfind()则是返回搜索到的最右边字串的位置,如果只搜索到一个或没有搜索到字串,则和find() 是等价的
 同理rindex()

字符串的替换:

S.replace(old, new[, count])

 将字符串中的字串old替换为new字符串,如果给定count,则表示只替换前count个old字串。如果S中搜索不到字串old,则无法替换,直接返回字符串S(不创建新字符串对象)

S.expandtabs(N)

 将字符串S中的 \t 替换为一定数量的空格。默认为N=8.注意,expandtabs(8)不是 \t 直接替换为8个空格。例如‘xyz\ttab’.expandtabs() 会将 \t 替换为5个空格,因为“xyz”占用了3个字符位。所以,在替换“\t”为空格时,会减掉“\t”前面的字符数量。如果“\t”的前面正好没有字符,则直接将“\t”替换为N个空格。另外,它不会替换换行符(\n 或 \r)

S.translate(table)
static str.maketrans(x[, y[, z]])

 str.maketrans()生成一个字符一一映射的table,然后使用translate(table)对字符串S中的每个字符进行映射
 translate()实现的功能和Linux中的tr命令是类似的
 注意,maketrans(x[,y[,z]])中的x和y都是字符串,且长度必须相等
 如果maketrans(x[,y[,z]])给定了第三个参数z,则这个参数字符串中的每个字符都会被映射为None

字符串的拆分与组合:

S.split(sep=None, maxsplit=-1)
S.rsplit(sep=None, maxsplit=-1)
S.splitlines([keepends=True])

 都是用来分割字符串,并生成一个列表
 split() 根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为“-1”,则会从左向右搜索并且每遇到sep一次就分割知道搜索完字符串。如果不指定sep或者指定为None,则改变分割算法:以空格为分割符,且将连续的空白压缩为一个空格
 rsplit()和split()是一样的,只不过是从右边向左边搜索
 splitlines()专门用来分割换行符。虽然它有点像split(’\n’)或split(’\r\n’),但它们有些区别
 splitlines()中可以指定各种换行符,常见的是\n、\r、\r\n。如果指定keepends为True,则保留所有换行符

>>>'1,2,3'.split(',')  #sep为单个字符时
['1', '2', '3']
>>>'1,2,3'.split(',' ,1)  #只分割了一次
['1', '2,3']
>>>'1,2,,3'.split(',')  #不会压缩连续的分隔符
['1','2','','3']
>>>'<hello><><world>'.split('<')
['','hello>','>','world>']
>>>'<hello><><world>'.split('<>')
['<hello>','<world>']


S.partition(sep)
S.rpartition(sep)

 搜索字符串S中的字串sep,并从sep处对S进行分割,最后返回一个包含3元素的元组;sep左边的部分是元组的第一个元素,sep自身是元组的第二个元素,sep右边是元组的第三个元素
 partition(sep)从左边第一个sep进行分割,rpartition(sep)从右边第一个sep进行分割
 如果搜索不到sep,则返回的3元素元组中,有两个元素为空。partition()是后两个元素为空,rpartition()是前两个元素为空


S.join(iterable)

 将可迭代对象(iterable)中的元素使用S连接起来。注意,iterable中必须全部是字符串类型,否则报错




可以参考学习一下这篇博文中的内容
Python字符串操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值