'abcdee'.partition('f') --> ('abcdee', '', '')
'abcdee'.partition('e') --> ('abcd', 'e', 'e')
str.rpartition(sep):
与str.partition()相反,从原字符串的最右边开始拆分,但是同样返回包含三个元素的元组:倒数第一个Sep之前的字符串,Sep字符,Sep之后的字符串。
注意”倒数Sep之前的字符串”,这个之前的字符串,是从原字符串的最左边开始算,并不是最右边。如:
'abcdee'.rpartition('e') --> ('abcde', 'e', '') //拆分的三个元素分别是:倒数第一个e之前的元素,e本身,e之后的元素,此外为空格
'abcdee'.rpartition('f') --> ('', '', 'abcdee') //拆分的三个元素分别是:空格,空格,原字符串
str.split([sep[, maxsplit]]):
返回一个以Sep分隔的列表,maxsplit指定拆分次数(因此,列表中元素的个数为maxsplit + 1)。Sep默认为空格,maxsplit默认不限制拆分次数。
注意:1)如果未指定Sep或指定Sep为None(’’),str两端的空格将舍弃;如果指定Sep(不管能否在原字符串中找到Sep),str两端的空格将保留
2)如果未能在原字符串中找到Sep,则返回一个仅包含一个元素的列表,这个元素就是原字符串。
如:
' abcbdbee '.split() --> ['abcbdbee'] //未指定Sep,返回仅包含一个元素的列表,舍弃str两端的空格
' abcbdbee '.split('f') --> [' abcbdbee '] //指定f为Sep(虽然找不到f),返回仅包含一个元素的列表,保留两端的空格
' abcbdbee '.split('b') --> [' a', 'c', 'd', 'ee '] //指定b为Sep,不限定拆分次数,str两端的空格被保留
' abcbdbee '.split('b', 2) --> [' a', 'c', 'dbee '] //以b为分隔符,拆分两次
注:有点像str.partition(),但是str.partition()返回一个元组,而且分隔符Sep是元组中的一个元素;而str.split(0返回一个列表,分隔符Sep不在列表中
str.rsplit([sep[, maxsplit]]):
与str.split()类似,只是它从最右边开始拆分。只有在指定maxsplit的情况下才会看到效果。如:
'abcbdbee'.rsplit('b') --> ['a', 'c', 'd', 'ee'] //不指定maxsplit,返回的结果与str.split()相同
'abcbdbee'.rsplit('b', 2) --> ['abc', 'd', 'ee'] //可以看出与str.split(‘b’, 2)的差别
str.join(iterable):
使用连接符str来连接iterable对象中的元素,返回一个被str连接起来的,由iterable对象的元素组成的字符串。如果传入一个非iterable对象,如整数、布尔值等,将返回Type Error。 如:
‘A B’. join(['1', '2', '中国']) -->1A B2A B中国
‘A B’.join(‘12中国’) -->1A B2A B中国
‘A B’.join(123) -->Type Error
注:iterable object或iterator type最主要的特征是支持两个函数:__iter__()和__next__(),虽然不是很准确,但可以简单的认为支持使用for语句逐个取值的数据类型都是迭代器对象。
sequence type(六种:strings、byte objects、byte arrays、lists、tuples、range objects)和dictionary都属于iterable对象。
str.splitlines([keepends]):
拆分一个包含多行的字符串,以每行为一个元素返回一个列表。如果字符串不是多行的,则返回原字符串。keepends是一个True字符或非零整数,表示保留行尾标志。该方法多用于处理文件。如:
Line = ‘AB
CD
EF’’’
Line.splitlines() -->['AB', 'CD', 'EF']
Line = 'AB\nCD\nEF'
Line.splitlines() -->['AB', 'CD', 'EF']
Line = 'AB\nCD\nEF'
Line.splitlines(True) --> ['AB\n', 'CD\n', 'EF']