Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323

Замена однотипных данных

11.02.2021, 09:36. Показов 1598. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, подскажите как регуляркой объединить замены до одной
Python
1
2
3
4
        trepl = trepl.replace('средств или !', 'средств !')
        trepl = trepl.replace('вызванного или !', 'вызванного !')
        trepl = trepl.replace('отношении и !', 'отношении !')
        trepl = trepl.replace('получении и !', 'получении !')
помню, что в поле на что заменяем нужно поставить \1
давно такие замены не делал.......
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2021, 09:36
Ответы с готовыми решениями:

Массовая замена однотипных данных
Господа спецы! Очень нужна проф помощь. В документах ворд необходимо массово заменять однотипные данные: Ф.И.О., адреса, и т.д. В ручную...

Вывод однотипных данных
Здравствуйте. Может подскажет кто- нибудь. Стоит вопрос: требуется показать пользователю в браузере страницу с большим количеством...

Замена тэгов в шаблоне Word на данные из Excel (поиск всех однотипных тэгов)
Прошу помощи по следующей проблеме: есть шаблон договора Word, в данном шаблоне расставлены тэги типа <название фирмы>, <ФИО...

23
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
11.02.2021, 09:44
Просто используйте цикл.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
11.02.2021, 09:55  [ТС]
мне нужен простой пример, поясняющий работу с выражениями в Питоне-ещё ни разу не делал

Добавлено через 6 минут
(Сережа) (ест) (грушу).
() - это диапазон
Строка замены
\3 \2 \1
Результат поиска и замены
грушу ест Сережа.
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
11.02.2021, 10:03
Ципихович Эндрю,

Не по теме:

напомнило из фильма :
- Наша Маша громко ПЛАЧЕТ, но ...
- ГРОМКО плачет наша Маша

0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
11.02.2021, 13:41  [ТС]
что-то типа того:
Python
1
trepl = re.sub(r'((средств) или (!)|(вызванного) или (!)|(отношении) и (!)|(получении) и (!)), \1 \2, trepl)
возможно?

Добавлено через 14 минут
вот:
Python
1
trepl = re.sub(r'((средств) или (!)|(вызванного) или (!)|(отношении) и (!)|(получении) и (!))', '\1 \2', trepl)
Добавлено через 4 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
пример, поясняющий работу с выражениями в Питоне
имелось в виду
пример, поясняющий работу с выражениями в регулярных выражениях в Питоне

Добавлено через 50 минут
подскажите пжл, отчего это происходит и как избавиться?, чтобы в результате после замен
не было   - в форме вставляется как квадратики, перевожу - SOH STX, это видно в консоли Пайчарма, в Блокноте++, Ворде, спасибо

Добавлено через 2 часа 24 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
подскажите пжл, отчего это происходит и как избавиться?, чтобы в результате после замен
не было   - в форме вставляется как квадратики, перевожу - SOH STX, это видно в консоли Пайчарма, в Блокноте++, Ворде, спасибо
происходит такое в том числе при замене (из) или (!) на '\1 \2'
чем сие Питону не понравилось?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
11.02.2021, 19:48  [ТС]
вот полный код-чтобы произвелась ошибка

Python
1
2
3
4
5
import re
 
trepl = 'из или !другой'
trepl = re.sub(r'((из) или (!)|(вызванного) или (!)|(отношении) и (!)|(получении) и (!))', '\1 \2', trepl)
print(trepl)
в результате
другой - перед другой два квадратика, не вставляются в форму))
а ожидаю
из !другой
почему так происходит, как исправить? спс
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.02.2021, 22:06
Ципихович Эндрю, методом тыка с регулярками работать не получится. (Как и со всем остальным впрочем).
Почитать литературу? Не, не слышал...
ЗЫ:
Цитата Сообщение от Ципихович Эндрю
() - это диапазон
Это не диапазон, а группа.

Добавлено через 5 минут
ЗЗЫ: регулярка в данном случае элементарная.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
12.02.2021, 11:16  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Это не диапазон, а группа
это давно копировалось - была инфа относительно Ворда и там так называется, да бог с ней...
Цитата Сообщение от iSmokeJC Посмотреть сообщение
ЗЗЫ: регулярка в данном случае элементарная
подскажите пожалуйста, спасибо

Добавлено через 3 часа 29 минут
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Почитать литературу?
почитал, пишут что группы в регэкспе для моего случая нужно записать так - r'\g<1> \g<2>'
но опять не работает
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.02.2021, 16:29
Ципихович Эндрю, заменяющие группы еще и третьим образом можно вывести. Но это не имеет значения, т.к. захватывающая регулярка неправильная.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
12.02.2021, 16:39  [ТС]
то есть
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
'\1 \2'
неправильно, а
Python
1
r'\1 \2'
и
Python
1
r'\g<1> \g<2>'
правильно?
ну и на этом спасибо
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
14.02.2021, 12:16  [ТС]
хелп, всё равно не доходит, код
Python
1
2
3
4
import re
s = 'из или !другой'  
s1 = re.sub(r'((из) или (!))', r'\g<1> \g<2>', s)
print(s1)
для меня означает ищу текст 'из или !' - есть такой в s
s = 'из или !другой'
вот эту подкрашенную часть я должен заменить на группу 1 - 'из' пробел группа 2 - '!'
получится 'из !', а всё вместе 'из !другой' - почему не так?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.02.2021, 13:05
Ципихович Эндрю, так и будешь долбиться в стену лбом писать наугад, вместо того, чтоб книжку почитать?
У меня изучение регулярок по книге заняло неделю (по вечерам). Мегакрутым профи я ессно не стал, но продвинулся очень хорошо в понимании регулярок. Не лучше ли сделать то же самое, нежели месяцами шпилить всякую дичь на форум?
Типа такой
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
r'((из) или (!))'
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
14.02.2021, 13:21  [ТС]
не понятно, почему
Python
1
s1 = re.sub(r'(из|от) или (!)', r'\g<1> \g<2>', s)
работает
Python
1
s1 = re.sub(r'((из) или (!)|(от) или (!))', r'\g<1> \g<2>', s)
НЕ работает, для меня это одно и тоже, делаю вывод из прочитанного в книге
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.02.2021, 13:39
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
для меня это одно и тоже
Это говорит о том, что ты абсолютно ничего не понял.

Добавлено через 2 минуты
Где ты, например, видел вот такое?
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
(!)|(от)
Внутри группы еще четыре группы, да еще и с ИЛИ.
Алес
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
14.02.2021, 13:50  [ТС]
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
не понятно, почему
s1 = re.sub(r'(из|от) или (!)', r'\g<1> \g<2>', s)
работает
ок на ней и остановлюсь, тем более, что сюда (из|от) - можно докрутить много чего, спс
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
15.02.2021, 19:27  [ТС]
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
не понятно, почему
PythonВыделить код
1
s1 = re.sub(r'(из|от) или (!)', r'\g<1> \g<2>', s)
работает
PythonВыделить код
1
s1 = re.sub(r'((из) или (!)|(от) или (!))', r'\g<1> \g<2>', s)
НЕ работает, для меня это одно и тоже, делаю вывод из прочитанного в книге
разобрался:
Потому что каждая пара скобок это своя группа:
1я группа - даст строку "из или !" или "от или !".
2я - "из" или пустая строка (пустая, начиная с Python 3.5 re).
3я - "!" или пустая строка.
4я - "от" или пустая строка.
5я - "!" или пустая строка.


опять проблема возникла, код:
Python
1
2
3
4
5
6
import re
f_text = "варвыарвыначалормивромирвоыарвыконецвапрапврпаврпварпаврав"
txt_mark_start, txt_mark_end = "начало", "конец"
# '^' - начало строки, '$' - конец строки
special_part = re.sub(f'^(.*?){txt_mark_start}(.*?){txt_mark_end}(.*?)$', r'\g<2>', f_text, re.I | re.DOTALL)
print(special_part)
на этом примере ответ верный, а на реальном у меня в программе не сделало замен, подскажите, в чём я ошибаюсь? спс
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.02.2021, 19:37
Ципихович Эндрю, зачем всю строку заменять на найденную в середине группу?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
15.02.2021, 19:41  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
зачем всю строку заменять на найденную в середине группу?
так и нужно, было
f_text = "варвыарвыначалормивромирвоыарвыконецвапрапврпаврпварпаврав"
ответ нужен "рмивромирвоыарвы"
то есть от начала строки вместе с переменной начала - txt_mark_start
от переменной конца - txt_mark_end до конца строки
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.02.2021, 19:42
Ципихович Эндрю, а просто найти то, что между этими переменными, не?

Добавлено через 26 секунд
Python
1
special_part = re.search(f'(?is){txt_mark_start}(.*?){txt_mark_end}', f_text).group(1)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
15.02.2021, 20:50  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Добавлено через 26 секунд
чуть медленнее соображаю, спс

Добавлено через 1 час 6 минут
вау
буквы соответствуют флагам re.I (ignore case), re.S (dot matches all)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2021, 20:50
Помогаю со студенческими работами здесь

Xml сериализация не однотипных данных
Доброго времени соток. Занимаюсь пониманием xml сериализации и столкнулся с проблемой сериализации не однотипных данных. У меня есть...

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

Где хранить 5 однотипных данных
Прошу совета! Решать ничего не прошу! Прикладная задача, по заданию необходимо написать самостоятельно структуру динамического...

Разное количество однотипных данных в таблице
Добрый день, я новичек в php, прошу совет Есть карта земель, каждая земля (a0, a1... или s0 s1...) имеет соседей, необходимо внести...

Запрос на пересечение данных из 2 однотипных таблиц
Вроде был уверен что в СУБД которые не поддерживают INTERCECT заменой ему будет вложенный запрос с EXISTS т е например SELECT *...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru