Приведен список глоссариев:
glossaries = ['USA', '34']
Цель состоит в том, чтобы использовать элементы внутри глоссариев и разбивать строку, используя глоссарии в качестве разделителей. Например. учитывая строку и глоссарии, функция _isolate_glossaries()
:
glossaries = ['USA', '34']
word = '1934USABUSA'
_isolate_glossaries(word, glossaries)
должен вывести:
['19', '34', 'USA', 'B', 'USA']
Я пробовал:
def isolate_glossary(word, glossary):
print(word, glossary)
# Check that word == glossary and glossary not in word
if re.match('^{}$'.format(glossary), word) or not re.search(glossary, word):
return [word]
else:
segments = re.split(r'({})'.format(glossary), word)
segments, ending = segments[:-1], segments[-1] # Remove the last catch with null string.
return segments
def _isolate_glossaries(word, glossaries):
word_segments = [word]
for gloss in glossaries:
word_segments = [out_segment
for segment in word_segments
for out_segment in isolate_glossary(segment, gloss)]
return word_segments
Это работает, но выглядит слишком запутанным, чтобы иметь столько уровней разбиения циклов и регулярных выражений. Есть ли лучший способ разбить строку на основе глоссариев?