Из списка строк я хочу извлечь все слова и сохранить их в новый список. Мне удалось сделать это, используя сопоставление образцов в форме:
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']
Я благодарен за предложения, как решить эту проблему.
Вы можете использовать
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)