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

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

02.12.2022, 00:34. Показов 1809. Ответов 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
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 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
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru