美文网首页
2018-10-07 008 字符串 B

2018-10-07 008 字符串 B

作者: 杜若飞er | 来源:发表于2018-10-07 20:13 被阅读13次

    今天写一写字符串的方法,也就是字符串这个对象所具有的函数;
    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++字符串倒是方法少一点,但是万一想做一些骚操作,就要写很麻烦的算法,比方说一直循环查找子串之类的,这样一来还不如多记住几个函数——而且平心而论,这些函数也不算难记吧!

    相关文章

      网友评论

          本文标题:2018-10-07 008 字符串 B

          本文链接:https://www.haomeiwen.com/subject/mwxraftx.html