實際案例:
我們要把某個字符串依據(jù)分隔符號拆分不同的字段,該字符串包含多種不同的分隔符
例如:s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
其中(;,|\t)都是分割符
解決方案:
方法一:連續(xù)使用str.split()方法,每次處理一種分隔符號
方法二:使用正則表達式的re.split()方法,一次性拆分字符串(推薦)
方式一:
def mySplit(s,ds):
res = [s,]
for d in ds: # 迭代每個分隔符,切分字符串
t = []
list(map(lambda x: t.extend(x.split(d)), res))
res = t
return [x for x in res if x] # 防止連續(xù)的兩個分隔符時,出現(xiàn)空元素的情況
s = 'ab;cd|efg|hi,,jkl|mn\topq;rst,uvw\txyz'
res = mySplit(s,';,|\t')
print(res)
方式二:
"""
split(pattern, string, maxsplit=0, flags=0)
Split the source string by the occurrences of the pattern,
returning a list containing the resulting substrings.
"""
import re
s = 'ab;cd|efg|hi,,jkl|mn\topq;rst,uvw\txyz'
print(re.split(r'[;,\t|]+',s))
總結(jié):
對于單一分割符的情況,切分字符串使用字符串的split方法,速度更快。
對于多個分割符的情況,切分字符串使用re的split方法。