方法1:连续使用str.split()方法,每次处理一种分隔符号
s = 'ab;cd|efg|hi,jkl|mn opq;rst,uvw xyz'
def my_split(s, seps):
res = [s]
for sep in seps:
t = []
list(map(lambda ss: t.extend(ss.split(sep)), res))
res = t
return res
#reduce + split
from functools import reduce
my_split2 = lambda s, seps: reduce(lambda l, sep: sum(map(lambda ss: ss.split(sep), l), []), seps, [s])
my_split2(s, ',;| ')
执行结果:
['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']
方法2:使用正则表达式的re.split()方法(推荐)
s = 'ab;cd|efg|hi,jkl|mn opq;rst,uvw xyz'
import re
re.split('[;,| ]+', s)
执行结果:
['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']