Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431

Парсинг текста

28.06.2021, 13:31. Показов 4014. Ответов 22
Метки нет (Все метки)

По служебной необходимости столкнулся с ситуацией парсинга текста. С Python я знаком шапочно, к сожалению, поэтому прошу помощи.
Задача такая: на вход подается строка, где могут присутствовать (а могут и нет) некие, скажем так, "функции" имеющие примерно такой вид "Имя_Функции(Параметры)". Мне нужно "вычленить" из этой строки эти функции, затем их посчитать и вставить обратно уже результат. Есть список имен этих "функций".
Я могу сделать это "в лоб" примитивными программными средствами - найти первое совпадение с именем, сохранить позицию, затем посимвольно считать "параметры" от открывающей скобки и до закрывающей, сохранить длину всей функции, затем вставить результат, но мне бы хотелось использовать средства Python, т.к., он (насколько я знаю) как раз силен в подобных задачах.
Возможно, это нужно делать регулярными выражениями, но если выражение в скобках я еще смогу обернуть в регулярки, то учесть Имя функции я уже не знаю как.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2021, 13:31
Ответы с готовыми решениями:

Парсинг текста с сайта
Добрый вечер! Питон знаю посредственно, как и HTML в принципе, но в голове закралась идея сделать бота в телеге, который будет брать...

Парсинг текста
Здравствуйте, надо зделать 2 функции в python. 1) Из большого текста вырезать кусок по параметрам слева и права Пример: cutOne('Lorem...

Парсинг и замена текста в html (python3)
Приветствую Друзья, если не затруднит, подскажите решение для python3. Есть некий html файл, вполне себе стандартный, в нем среди...

22
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
29.06.2021, 14:41
Цитата Сообщение от Constcat Посмотреть сообщение
Снова я к вам.
Вот, не получается разобрать подобные строки. Слаб в регулярках, к сожалению...
Данный класс (задач) регулярками не решается. Точка!
P. S. Ты либо пишешь лексер + парсер по своей грамматике (с помощью регулярок или без), либо страдаешь дальше.
P. P. S. Кури ANTLR4.

Добавлено через 2 минуты
Первая ссылка в гугле: https://stackoverflow.com/a/22492975.
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.06.2021, 14:55
Цитата Сообщение от Constcat Посмотреть сообщение
Вот, не получается разобрать подобные строки
А ты вообще попробовал то, что тебе показали?
Моя регулярка работает на всех твоих примерах.

Python
1
2
3
4
5
6
>>> text= """PROJECT_DURATION(>,50) - TASK_DURATION(=,70)
PROJECT_COST(<,1000) * 365
"Manager " + PRROJECT_NAME(=,Иванов)"""
>>> re.findall(r"(?i)(\w+?)\((.*?)\)", text)
[('PROJECT_DURATION', '>,50'), ('TASK_DURATION', '=,70'), ('PROJECT_COST', '<,1000'), ('PRROJECT_NAME', '=,Иванов')]
>>>
1
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
29.06.2021, 15:51  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
А ты вообще попробовал то, что тебе показали?
Моя регулярка работает на всех твоих примерах.
Упустил, каюсь... Сейчас попробую.

Добавлено через 49 минут
Garry Galler, Еще раз большое спасибо! Ваша регулярка + цикл с заменой из примера Fudthhh полностью решила задачу!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2021, 15:51

Парсинг текста на сайте с защитой от копирования
Уважаемые форумчане, прошу помощи: есть сайт с текстом книги, но он защищен от копирования. Помогите спарсить весь текст книги в файлик. ...

Парсинг по порядку или парсинг до определенного тега
Доброго времени друзья! Подскажите пожалуйста, к примеру есть вот такой html код: &lt;div class=&quot;container mt-3&quot;&gt; ...

Парсинг текста
Здравствуйте, у меня есть строка char* с огромным количеством текста(в мб) как ее можно про парсить? Можно пример, с любым много строчным...

парсинг текста
Ну в общем,хочу спарсить с сайта текста находящийся между тегами,но компилятор ругается. a=(List-&gt;Text.Pos(&quot;&lt;a...

Парсинг текста
Парсит один раз, хотя значений как минимум 15. Как правильно сделать цикл? Помогите пожалуйста. var parser, log:string; begin ...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru