Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для VistaSV30
988 / 332 / 79
Регистрация: 10.04.2012
Сообщений: 1,242
Записей в блоге: 4

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

02.12.2022, 00:34. Показов 1890. Ответов 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,242
Записей в блоге: 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,242
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru