Сопоставление шаблонов Python с языковыми символами

1

Из списка строк я хочу извлечь все слова и сохранить их в новый список. Мне удалось сделать это, используя сопоставление образцов в форме:

import re
p = re.compile('[a-z]+', re.IGNORECASE)
p.findall("02_Sektion_München_Gruppe_Süd")

К сожалению, язык содержит символы, специфичные для языка, так что строки в форме данного примера дают:

['Sektion', 'M', 'nchen', 'Gruppe', 'S', 'd']

Я хочу, чтобы он уступил:

['Sektion', 'München', 'Gruppe', 'Süd']

Я благодарен за предложения, как решить эту проблему.

Теги:
pattern-matching

1 ответ

1
Лучший ответ

Вы можете использовать

import re
p = re.compile(r'[^\W\d_]+')
print(p.findall("02_Sektion_München_Gruppe_Süd"))
# => ['Sektion', 'München', 'Gruppe', 'Süd']

См. Демо-версию Python 3.

Образец [^\W\d_]+ d_ [^\W\d_]+ соответствует любым символам 1+, которые не являются не-словами, цифрами и _, то есть являются только буквами.

В Python 2.x вам нужно будет добавить флаг re.UNICODE чтобы он соответствовал буквам Unicode:

p = re.compile(r'[^\W\d_]+', re.U)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню