Извлечь российские города из названий файлов

Рейтинг: 2Ответов: 2Опубликовано: 21.02.2023

Есть список из названий файлов

files = ['Downloads/report_2023-02-19_Москва.xlsx',
 'Downloads/report_2023-02-19_Нижний Новгород.xlsx',
 'Downloads/report_2023-02-19_Пермь.xlsx',
 'Downloads/report_2023-02-19_Новосибирск.xlsx']

При попытке извлечь российские города, у меня следующий результат:

import re
for b in files:
    for n in re.findall(r'(?<=_)[а-яА-Я]\w+', b):
        print (n)

Результат:

Москва
Нижний
Пермь
Новосибирск

Нужен следующий результат:

Москва
Нижний Новгород
Пермь
Новосибирск

Ответы

▲ 4Принят

Поменял регулярку, включив в поиск пробелы. Поменял метод поиска на re.search:

import re
for b in files:
    m = re.search(r'(?<=_)[а-яА-Я ]+', b)
    print(m.group())

Результат

Москва
Нижний Новгород
Пермь
Новосибирск
▲ 0

ИМХО там еще может быть Комсомольск-на-Амуре. И после названия города идет "." и расширение, т.е. что-то такое:

r'([А-Яа-я]+[- А-Яа-я]+?)\.'