これは、はるかに高速正規表現、その後でなければなりません、あなたが望んでいたとして、あなたはseperatorsのリストを渡すことができます。
それを使用する方法
def split(txt, seps):
default_sep = seps[0]
# we skip seps[0] because that's the default seperator
for sep in seps[1:]:
txt = txt.replace(sep, default_sep)
return [i.strip() for i in txt.split(default_sep)]
:
>>> split('ABC ; DEF123,GHI_JKL ; MN OP', (',', ';'))
['ABC', 'DEF123', 'GHI_JKL', 'MN OP']
性能試験:
import timeit
import re
TEST = 'ABC ; DEF123,GHI_JKL ; MN OP'
SEPS = (',', ';')
rsplit = re.compile("|".join(SEPS)).split
print(timeit.timeit(lambda: [s.strip() for s in rsplit(TEST)]))
# 1.6733491150007467
print(timeit.timeit(lambda: split(TEST, SEPS)))
# 1.6442800510003508
非常に良い。最高の答えとしてこれを選ぶ必要があります。皆さんありがとう! – blah238
SOは空白を圧縮し、上の文字列に2つ以上の連続した空白があります。 – fabrizioM
ありがたいことに、常にコンマまたはセミコロンのどちらかがあります。 – blah238