python3 字符串常用方法总结

认识不足,先看导图 。

查找

  • find()、index() 用来查找一个字符串在另一个字符串中首次出现位置。
  • rfind() 、rindex() 用来查找一个字符串在另一个字符串中最后一次出现的位置。

find() 和index() 主要区别在于,find() 找不到时返回-1,index() 找不到报错 ”ValueError: substring not found" 。
count() 返回一个字符串在另一个字符串中出现的次数 ,个人猜测rfind() 里的 "r"是 rear (后方的,后面的,背面的)。

str = "Donald John Trump" # 
str.find("o",1,17) # find(sub,start,end) # 指定查找的字符串,也可以指定查找范围,返回位置。
 1
str.find("sane") # 没有则返回 -1
-1
str.rfind("o") # 从后开始查找 
 8
str.index("o") # index(sub,start,end)
 1
str.rindex("good") # find报返回-1,index返回‘substring not found’'
 ValueError: substring not found
str.count("n") # count(sub,start,end) # 计数
 2

分割

  • split() 用分隔符将字符串分割成多个字符串 ,返回分割后字符串组成的列表。
  • rsplit() 用分隔符将字符串从后往前分割成多个字符串 ,返回分割后字符串组成的列表。
  • partition() 用分隔符将字符串分为两部分,函数返回三个字符串组成的元组 ,即分隔符前的字符串,分隔符,分隔符后的字符串。
  • rpartition() 用分隔符将字符串从后往前分为两部分,函数返回三个字符串组成的元组 ,即分隔符前的字符串,分隔符,分隔符后的字符串。
str.split(" ") # split(sep,maxsplit) 指定分隔符,也可以选择最大分割数
 ['Donald', 'John', 'Trump'] 
str.split(" ",1) # 最大分割次数为1
['Donald', 'John Trump']
'2020-6-18'.split('-')
['2020', '6', '18']
str.rsplit(" ") 
['Donald', 'John', 'Trump']
str.partition(" ") # 返回分割符之前的,分隔符,分隔符后的三个部分
('Donald', ' ', 'John Trump')
str.rpartition(" ") 
('Donald John', ' ', 'Trump')

连接

join() 与split() 相反,可以把字符串用指定的连接符连起来。+也可以把字符串连接起来,但效率比join() 低很多,python社区推荐使用join() 。

str_s=str.split(" ") ;connector=" " ; str=connector.join(str_s)  
'Donald John Trump'

大小写转换

  • lower() 全部变成小写
  • upper() 全部变成大写
  • capitalize() 整个字符串第一个字母大写
  • title() 每个单词首字母大写 ( title 是标题的意思,一般标题都是每个单词的首字母大写)
  • swapcase (),将大写转化为小写,小写转为大写
  • casefold() 转化为小写 (casefold() 效果和 lower() 方法非常相似,都可以转换字符串中所有大写字符为小写。不同地方在于lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言中把大写转换为小写的情况只能用 casefold()方法。
str = "Donald John Trump" 
str.lower() 
>>>'donald john trump'
str.upper()
>>>'DONALD JOHN TRUMP'
str.capitalize()
>>>'Donald john trump'
str.title()
>>>'Donald John Trump'
str.swapcase()
>>>'dONALD jOHN tRUMP'
"ΔΓ".casefold()
>>>'δγ'

替换

replace() 用来替换字符串中所有的 某个字符串 。但translate() 可以同时替换多个不同的字符串。

str="America!Make America great again!"
str.replace("America","China")
>>>'China!Make China great again!'
# 使用translate前先要使用maketrans制作一个映射表
str="I LOVE YOU"
mapping_table="".maketrans("ILVE", "UTO!")
str.translate(mapping_table)
>>>'U TOO! YOU'

删除

  • strip() 用来删除两端的空白字符或者连续的指定字符
  • rstrip() 用来删除右边的空白字符或者连续的指定字符
  • lstrip() 用来删除左边的空白字符或者连续的指定字符

python 空白字符包括空格、换行符、制表符等 。

str="   Donald John Trump   \n  "
str.strip()
>>> 'Donald John Trump'
str.rstrip()
>>>'   Donald John Trump'
str.lstrip()
>>>'Donald John Trump   \n  '
str="I LOVE UUUU"
str.rstrip("U")
>>>'I LOVE '

类型判断

python提供函数来测试字符串的类型,是返回True, 否则返回False .

  • isalpha() 是否是字母
  • isdigit() 是否是数字
  • isalnum() 是否只有字母或者数字 (alnum由alpha与num组成)
  • isspace() 是否为空白字符
  • isupper() 是否全为大写字母
  • islower() 是否全为小写字母
  • istitle() 是否为标题格式(每个单词的首字母大写)
  • isascii() 是否为ascii编码
  • isprintable() 是否是可打印的,除了空白符号都是可打印的
"abc".isalpha()
>>>True
"123".isdigit()
>>>True
"123mutouren".isalnum()
>>>True
"  \n".isspace()
>>> True
"ARE YOU OK?".isupper()
>>>True
"no".islower()
>>> True
"Donald John Trump".istitle()
>>>True
"哎呦喂".isascii()
>>>False
"   \n".isprintable()
>>>False

存在性判断

关键词in 与 not in 可以测试字符串中是否包含某个子字符串。

"I" in "you"
>>>False
"I" not in "you"
>>>True

若只想看开头和结尾是不是某个字符串可以使用startwith() 与endswith()

"Success is just accumulation".startswith("S")
>>>True
"Join us right now, live what we love.一起热爱,就现在".endswith('现在')
>>>True

调节对齐方式

返回指定长度的字符串,原字符串按新的对齐方式出现在新字符串中。

  • center() 居中对齐
  • ljust() 左对齐
  • rjust() 右对齐
    zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
"biu".center(20)
>>>'        biu         '
"biu".center(20,"*")  #  center( len, padding)  填充默认空格
>>>'********biu*********'
"biu".ljust(20)
>>>'biu                 '
"biu".rjust(20,"0")
>>>'00000000000000000biu'
"biu".zfill(20)  #  与.rjust(20,"0") 一样
>>>'00000000000000000biu'

格式化输出

Python2.6 开始,新增了一种格式化字符串的函数 format() ,简单来说就是格式化指定的值,并将其插入占位符{}中,基本语法是通过 {} 和 : 来代替以前的 % 。format() 函数的参数不限个数,位置可以不按顺序,更加灵活方便,目前python社区更推荐format() 方法。

"{} make {} greater agian".format("America","China") # 不指定位置
>>>'America make China greater agian'
"{0} make {1} greater agian".format("America","China") # 索引指定位置
>>> 'America make China greater agian'
"{0}二进制是{0:b},八进制是{0:o}".format(10) 
>>>'10二进制是1010,八进制是12'
# 也可以用字典映射
student={'name':'张三',"grade":'3','age':"9"}
'{map[grade]}年级的{map[name]}{map[age]}岁'.format(map=student)
>>>'3年级的张三9岁'
# 改用format_map方法如下 
'{grade}年级的{name}{age}岁'.format_map(student)
>>>'3年级的张三9岁'

执行字符串

eval() 函数用来执行一个字符串表达式,并返回表达式的值 。(我理解为运行把字符串引号去掉的表达式 )

eval("[1,2,3]")
>>> [1, 2, 3]
eval("3+4")
>>>7

感谢您在茫茫的网络世界中阅读了本文, 真心希望没有浪费您宝贵的时间,期待您指出文中的不足!

猜你喜欢

转载自blog.csdn.net/weixin_43705953/article/details/106842113