今天写一写字符串的方法,也就是字符串这个对象所具有的函数;
Python的字符串支持非常多的方法,其具体情况可以通过dir("")命令查看,并可以使用help()查看每种方法的具体用法(有点像Linux中的Man Page)。
下面不妨拉个单子:
dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
很显然,这些方法都记住显然不是很现实,好在IDE们都有强大的代码补全功能,而且,这些方法常用的也就其中的少数;
字符串拆分
字符串拆分和前面介绍的字符串切片不同,它更强调把一个字符串按照一定的规律拆分成若干个并返回一个Set(列表),这一方法常用的有四个函数:
split(sep = None,maxsplit = -1)
rsplit(sep = None,maxsplit = -1)
partition(sep)
rpartition(sep)
其中,split方法是按照指定字符sep(默认是Space)从左到右把原来的字符串拆成若干个,rsplit则是按照指定字符sep从右到左拆分;partition是根据sep从左侧拆分成三部分并返回一个元组,其内容是(left,sep,right)。
以下是应用:
Str = "hello world by DRF"
print( Str.split(" ") )
print( Str.rsplit("o") )
print( Str.partition(" ") )
print( Str.rpartition(" ") )
输出结果如下:
['hello', 'world', 'by', 'DRF']
['hell', ' w', 'rld by DRF']
('hello', ' ', 'world by DRF')
('hello world by', ' ', 'DRF')
很显然,split两个返回的是列表,而partition返回的则是元组,至于Set和tuple的区别,前面卧槽类型有说过了。
字符串组合
与split相反,join()是把列表里的若干个字符串合并成一个(并在其中添加sep)的方法,但事实上本菜鸡觉得远没有直接用+解决好;
字符串查找
字符串查找类似于⌘+f:
查找有五种方法:
函数样式 | 用法 |
---|---|
find (sub[ ,start[ ,end]]) |
查找一个字符串在另一个字符串(指定范围)首次出现的位置,并返回下标 |
rfind(sub[ ,start[ ,end]]) |
查找一个字符串在另一个字符串(指定范围)最后一次出现的位置,返回下标 |
index(sub[ ,start[ ,end]]) |
返回一个字符串在另一字符串中指定位置首次出现的位置 |
rindex(sub[ ,start[ ,end]]) |
返回一个字符串在另一个字符串制定范围最后一次出现的位置 |
count(sub[ ,start[ ,end]]) |
返回一个字符串在另一个字符串中出现的次数 |
Point:find系列查找失败会返回-1,而index查找失败会抛出异常。
字符串替换
字符串替换的具体写法是:
Str.replace(old, new[,count]
该方法返回的是替换之后的字符串;
多说几句
字符串的方法还没写完……
其实相比起来,C++字符串倒是方法少一点,但是万一想做一些骚操作,就要写很麻烦的算法,比方说一直循环查找子串之类的,这样一来还不如多记住几个函数——而且平心而论,这些函数也不算难记吧!
网友评论