Аватар для VistaSV30
988 / 332 / 79
Регистрация: 10.04.2012
Сообщений: 1,245
Записей в блоге: 4

Получить названия городов регулярным выражением

02.12.2022, 00:34. Показов 1896. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день!

Очень нерегулярно пользуюсь регулярными выражениями.
Подскажите как получить названия населенных пунктов, идущих в списке после сл. Большекрипинская?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
t = '''1 пожарно-спасательная часть / г. Симферополь
Отдельный пост 8 пожарно-спасательной части / п. Зуя
Пожарная часть № 3 / ст. Гиагинская
Пожарная часть № 4 / а. Кошехабль
Пожарная часть № 5 / п. Майский
Пожарно-спасательная часть № 1, г.Элиста
Пожарная часть № 126 / ст.Отрадная
Пожарная часть № 85 / пос. Верхнебаканский
Пожарная часть № 59 / х.Воскресенский
ПЧ-1 ФГКУ "1 отряд ФПС по Астраханской области", г. Астрахань ул. Волжская, 11
Пожарная часть № 49 / р.п. Октябрьский
Пожарная часть № 38 / п.г.т. Иловля
Пожарная часть №234/Родиново-Несветайский район, сл. Большекрипинская (субъект)
Пожарная часть № 81/ ст. Усть-Бузулуцкая
Пожарная часть № 75/ х.Большой Лычак
Отдельный пост №1 106 пожарной части 7 отряда федеральной противопожарной службы по Ростовской области р.п. Жирнов
Отдельный пост №1 79 пожарной части 17 отряда федеральной противопожарной службы по Ростовской области с. Средний Егорлык
ФКУ "39 пожарная часть ФПС по Ростовской области ГПС (договорная)" (1 разряд), 347045, Ростовской область, г. Белая Калитва, ул.Заводская, 14
Отдельный пост ПЧ № 4/ п. М. Горького
Пожарная часть № 1 / г. Ростов-на-Дону
Пожарная часть №235/Сальский район, пгт Сандата (субъект)
31 пожарно-спасательная часть / пгт Гвардейское
Отдельный пост 22 пожарно-спасательной части /пгт Заозерное
Пожарная часть № 6, п. Цаган-Аман
'''
t = t.splitlines()
 
import re
for i in t:
    m = re.search(r'([гпсх]|ст|пос|р\.п|п\.г\.т|пгт|сл)\.\s?[А-Я][а-я]*', i)
    if m != None: print(m[0])
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2022, 00:34
Ответы с готовыми решениями:

Дан список стран и городов каждой страны. Затем даны названия городов. Для каждого города укажите, в какой стране он нах
Объясните пожалуйста эту программу, очень нужно, в python не поняла тему словари. задание: Дан список стран и городов каждой...

Проблемы с регулярным выражением
Имеется часть кода (взял с гита, переделываю под себя), не пойму почему регулярное выражение работает, но не корректно, (на скрине 2) делаю...

Обработка файлов регулярным выражением
подскажите как написать обработку файлов регулярным выражением? программа должна открыть все файлы из каталога, удалить из каждого 1 и...

7
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.12.2022, 09:31
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

Цитата Сообщение от VistaSV30 Посмотреть сообщение
Очень нерегулярно пользуюсь регулярными выражениями.

Цитата Сообщение от VistaSV30 Посмотреть сообщение
идущих в списке после сл. Большекрипинская?
Никак. Ты же по строкам циклом бегаешь. Ищи все города, потом из списка убирай ненужное. Или изначально список режь.
И к пгт надо точку добавить, иначе работать вообще не будет.
ну или так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
t = '''1 пожарно-спасательная часть / г. Симферополь
Отдельный пост 8 пожарно-спасательной части / п. Зуя
Пожарная часть № 3 / ст. Гиагинская
Пожарная часть № 4 / а. Кошехабль
Пожарная часть № 5 / п. Майский
Пожарно-спасательная часть № 1, г.Элиста
Пожарная часть № 126 / ст.Отрадная
Пожарная часть № 85 / пос. Верхнебаканский
Пожарная часть № 59 / х.Воскресенский
ПЧ-1 ФГКУ "1 отряд ФПС по Астраханской области", г. Астрахань ул. Волжская, 11
Пожарная часть № 49 / р.п. Октябрьский
Пожарная часть № 38 / п.г.т. Иловля
Пожарная часть №234/Родиново-Несветайский район, сл. Большекрипинская (субъект)
Пожарная часть № 81/ ст. Усть-Бузулуцкая
Пожарная часть № 75/ х.Большой Лычак
Отдельный пост №1 106 пожарной части 7 отряда федеральной противопожарной службы по Ростовской области р.п. Жирнов
Отдельный пост №1 79 пожарной части 17 отряда федеральной противопожарной службы по Ростовской области с. Средний Егорлык
ФКУ "39 пожарная часть ФПС по Ростовской области ГПС (договорная)" (1 разряд), 347045, Ростовской область, г. Белая Калитва, ул.Заводская, 14
Отдельный пост ПЧ № 4/ п. М. Горького
Пожарная часть № 1 / г. Ростов-на-Дону
Пожарная часть №235/Сальский район, пгт Сандата (субъект)
31 пожарно-спасательная часть / пгт Гвардейское
Отдельный пост 22 пожарно-спасательной части /пгт Заозерное
Пожарная часть № 6, п. Цаган-Аман
'''
 
import re
 
z = re.sub(r'(\bпгт\b)', r'\1.', re.sub('(?ms).+?Большекрипинская \(субъект\)', '', t))
print(*re.findall(r'(?m)(?:\w+\.)+.+$', z), sep='\n')

result

Code
1
2
3
4
5
6
7
8
9
10
11
ст. Усть-Бузулуцкая
х.Большой Лычак
р.п. Жирнов
с. Средний Егорлык
г. Белая Калитва, ул.Заводская, 14
п. М. Горького
г. Ростов-на-Дону
пгт. Сандата (субъект)
пгт. Гвардейское
пгт. Заозерное
п. Цаган-Аман
1
 Аватар для VistaSV30
988 / 332 / 79
Регистрация: 10.04.2012
Сообщений: 1,245
Записей в блоге: 4
02.12.2022, 17:36  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
?m
для чего нужен этот шаблон? Не могу найти описание

И еще.
Друг iSmokeJC подскажите пожалуйста,
как выбрать названия городов из следующего списка?

Астрахань ул. Волжская 11
Большекрипинская (субъект)
Усть-Бузулуцкая
Большой Лычак
Средний Егорлык ул.Заводская, 14
Белая Калитва, ул.Заводская, 14
М. Горького
Ростов-на-Дону
Цаган-Аман
Каштановский (субъект)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.12.2022, 17:50
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

multiline
re.M
re.MULTILINE
When specified, the pattern character '^' matches at the beginning of the string and at the beginning of each line (immediately following each newline); and the pattern character '$' matches at the end of the string and at the end of each line (immediately preceding each newline). By default, '^' matches only at the beginning of the string, and '$' only at the end of the string and immediately before the newline (if any) at the end of the string. Corresponds to the inline flag (?m).
Добавлено через 8 минут
Цитата Сообщение от VistaSV30 Посмотреть сообщение
выбрать названия городов из следующего списка?
Оно?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
s = '''
Астрахань ул. Волжская 11
Большекрипинская (субъект)
Усть-Бузулуцкая
Большой Лычак
Средний Егорлык ул.Заводская, 14
Белая Калитва, ул.Заводская, 14
М. Горького
Ростов-на-Дону
Цаган-Аман
Каштановский (субъект)
'''
print(*re.findall(r'(?m)^(?:[А-ЯЁ][-\w]+\s?)+', s), sep='\n')
Code
1
2
3
4
5
6
7
8
9
Астрахань 
Большекрипинская 
Усть-Бузулуцкая
Большой Лычак
Средний Егорлык 
Белая Калитва
Ростов-на-Дону
Цаган-Аман
Каштановский
Добавлено через 3 минуты
М. Горького потерялся
fix
Python
1
print(*re.findall(r'(?m)^(?:[А-ЯЁ][-\w.]+\s?)+', s), sep='\n')
1
 Аватар для VistaSV30
988 / 332 / 79
Регистрация: 10.04.2012
Сообщений: 1,245
Записей в блоге: 4
02.12.2022, 17:50  [ТС]
Еще "М. Горького" или его и подобные (Ст. Оскол, Б. Камень и т.п.) лучше отдельно выбирать?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.12.2022, 17:54
Пофиксил. См. выше ))))
1
03.12.2022, 10:00  [ТС]

Не по теме:

Получилось обработать почти все данные. Но, тем не менее, много приходится вручную доделывать. Просто невозможно предусмотреть все возможные варианты представления данных. Это, примерно, установленное количество вариантов, помноженное на количество возможных ошибок заполнения и помноженное на фантазию человека заполнявшего отчет.
Хорошо, что еще не сделали как раньше, когда в одной ячейке записывали и текст и числа.
Но и так тоже хватает сюрпризов

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.12.2022, 10:40
VistaSV30, именно так. Если работать с регулярками, входной формат должен быть четко очерчен. А так, вариантов уронить регулярку, можно придумать множество.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2022, 10:40
Помогаю со студенческими работами здесь

Задан список из десяти городов. поменять местами названия любых двух городов, заканчивающихся буквой "а"
n = 9 m = print('Исходный список:') for i in range(n): print(m) print('') print('Изменённый список:') for i in range(n):...

Удалить символ регулярным выражением в словаре
Здравствуйте. Как можно с помощью регулярного выражения удалить точку в конце слова в словаре? data = { 'key_1': 'test.', ...

Найти слово проспект регулярным выражением
Добрый день! Не получается найти все варианты слова проспект: import re def Проспект(Nm): # Форматирование элемента...

Регулярным выражением удалить комментарии из программы на C#
Необходимо удалить комментарии на C# Однострочные комментарии удаляются, а вот с многострочными беда. На фото демонстрация исходного...

Найти строки не начинающиеся с цифры 9 регулярным выражением
Здравствуйте! Помогите пожалуйста с составлением регулярного выражения. У меня есть список строк, у которых отличается только первая цифра,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru