split()函数用于分割一个字符串,并返回一个字符串列表。
split()
当不带参数时以空格进行分割
当带参数时,以该参数进行分割。
当不带参数时
example:
st0= ' song huan gong '
print(st0.split())
结果为:
['song', 'huan', 'gong']
结论:当不带参数时,默认是以空格作为参数,不管空格在哪,或者有几个 全部被干掉!保留下不含空格的部分,非常容易理解。
当带参数时 和你想象的可能就不一样了
我们终将上面字符串中的空格替换为i。将split的参数设置为'i'
example:
st0= 'iisongiiihuaniiiigongi'
print(st0.split('i'))
结果为:
['', '', 'song', '', '', 'huan', '', '', '', 'gong', '']
这个结果, 并不是想象中的['song', 'huan', 'gong'] 而是多了很多空字符串元素'',这个怎么理解呢?
分析: 用切五花肉举个例子。
当带参数时,我们把字符串想象成一块五花肉 ,如'iisongiiihuaniiiigongi'这串五花肉,我们将split('i')的参数设置为'i'。那么'i'就是五花肉中的肥肉。是需要下刀的地方,切下的“肉”除了肥肉其它部分会被加入字符串数组(也就是返回值)。从左到右,直至切完。
我们就拿这块肉'iisongiiihuaniiiigongi'开刀。
第一刀:
看准“肥肉”下刀,第一个i被切除,这一刀下去只切下肥肉,没有瘦肉,而肥肉是要丢弃的。所以字符串数组的第一个元素是空字符串。
第二刀:
经过第一刀,五花肉少了一块肥肉(i),它还剩下'isongiiihuaniiiigongi'
与第一刀相同,字符串数组再添一个空字符串。
第二刀:
目前五花肉为'songiiihuaniiiigongi',我们从肥肉处下刀,我们切出了'songi',肥肉不要,所以字符串数组再添字符串'song'。
五花肉还剩下'iihuaniiiigongi'
接下来的第三刀和第四刀再次得到两个空字符串,第五刀得到'huan'
....
直到切到最后,整坨肉就只剩下一个i了,最后一刀下去i被切掉了,所以最后一个元素zydbbt是空字符串。
使用实战
>>> str="hello boybyebye"
>>> str.split("[")[1].split("]")[0]
'www.doiido.com'
>>> str.split("[")[1].split("]")[0].split(".")
['www', 'doiido', 'com']