美文网首页
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

    今天写一写字符串的方法,也就是字符串这个对象所具有的函数;Python的字符串支持非常多的方法,其具体情况可以通过...

  • 2017-09-25

    http://www.jianshu.com/p/21b92c8b008d

  • 2018-11-21

    What’s Your Name Again? (008) A: Nick! How’s it going? B:...

  • iOS底层之objc_msgSend快速查找流程

    在iOS底层之cache_t探究[https://www.jianshu.com/p/b008b3a0354d]分...

  • Python编程题17--字符串在另一个字符串中的位置

    题目 给定字符串A和字符串B,请检测字符串A是否在字符串B中,如果存在则返回字符串B中每次出现字符串A的起始位置,...

  • 字符串包含

    题目描述 给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短。请问,如何最快地判断字符串B中所...

  • 字符串匹配算法(KMP)

    两个字符串A、B,在A字符串中查找B字符串(分别长为m,n),如果找到了,返回B字符串在A字符串中第一次出现的下标...

  • Leetcode-Easy 984. String Withou

    题目描述 给定两个整数A和B,A代表‘a’的个数,B代表‘b’的个数,字符串的长度为A+B,输出一个字符串,字符串...

  • L1-011 A-B

    题目描述 本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,...

  • LeetCode-1021-删除最外层的括号

    有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,...

网友评论

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

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