If you are after timing, you are probably better of with a series of Python string manipulations:
def multisplit(s, splits=('/', ','), base_split=' '):
for split in splits:
s = s.replace(split, base_split)
return s.split() if not base_split.split() else list(filter(bool, s.split(base_split))
or, even faster (for slightly larger inputs):
def multisplit2(s, splits=('/', ','), base_split=' '):
s = functools.reduce(lambda t, r: t.replace(s, base_split), splits, s)
return s.split() if not base_split.split() else list(filter(bool, s.split(base_split))
A quick comparison with re-based solutions indicate a 5x to 10x speed up for the proposed approach:
import re
def re_findall(s):
return re.findall(r"[\w']+", s)
def re_split(s):
return list(filter(bool, re.split('\W+', s)))
s = "Cat/Wheat , Com, Ogl/oyher Face Express/Star,"
print(re_findall(s))
print(re_split(s))
print(multisplit(s))
# ['Cat', 'Wheat', 'Com', 'Ogl', 'oyher', 'Face', 'Express', 'Star']
%timeit re_findall(s)
# 2.54 µs ± 9.14 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit re_split(s)
# 3.05 µs ± 6.54 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit multisplit(s)
# 631 ns ± 10.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit multisplit2(s)
# 908 ns ± 12 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit re_findall(s * 1000)
# 1.55 ms ± 5.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit re_split(s * 1000)
# 1.96 ms ± 10.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit multisplit(s * 1000)
# 222 µs ± 7.34 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit multisplit2(s * 1000)
# 149 µs ± 1.72 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
"Cat,Wheat,Com,Ogl,oyher,Face,Express,Star"Or do you want a list of individual items like['Cat', 'Wheat'...]re.split('\W+', data)and you'll get['Cat', 'Wheat', 'Com', 'Ogl', 'oyher', 'Face', 'Express', 'Star', '']. This can be transformed to the expected result quite easy (if you really want the result you showed in the question).