实际案例:
我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符
例如:s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
其中(;,|\t)都是分割符
解决方案:
方法一:连续使用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] # 防止连续的两个分隔符时,出现空元素的情况
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))
总结:
对于单一分割符的情况,切分字符串使用字符串的split方法,速度更快。
对于多个分割符的情况,切分字符串使用re的split方法。