Ответ 1
>>> import re
>>> re.split('[ .]', 'a b.c')
['a', 'b', 'c']
Я хотел бы разбить строку, используя один или несколько разделительных символов.
например. "a b.c", разделить на "и". ". предоставит список [" a "," b "," c"].
На данный момент я не вижу ничего в стандартной библиотеке, чтобы сделать это, и мои собственные попытки немного неуклюжи. Например.
def my_split(string, split_chars):
if isinstance(string_L, basestring):
string_L = [string_L]
try:
split_char = split_chars[0]
except IndexError:
return string_L
res = []
for s in string_L:
res.extend(s.split(split_char))
return my_split(res, split_chars[1:])
print my_split("a b.c", [' ', '.'])
Ужасный! Любые лучшие предложения?
>>> import re
>>> re.split('[ .]', 'a b.c')
['a', 'b', 'c']
Это заменяет все разделители на первый разделитель в списке и затем "разделяет", используя этот символ.
def split(string, divs):
for d in divs[1:]:
string = string.replace(d, divs[0])
return string.split(divs[0])
выход:
>>> split("a b.c", " .")
['a', 'b', 'c']
>>> split("a b.c", ".")
['a b', 'c']
Мне действительно нравится это решение.
Решение без re:
from itertools import groupby
sep = ' .,'
s = 'a b.c,d'
print [''.join(g) for k, g in groupby(s, sep.__contains__) if not k]
Объяснение здесь fooobar.com/questions/16012/...
Не очень быстро, но выполняет задание:
def my_split(text, seps):
for sep in seps:
text = text.replace(sep, seps[0])
return text.split(seps[0])