Обработка сложных структур круглых скобок для получения ожидаемых данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработка сложных структур круглых скобок для получения ожидаемых данных

Сообщение Anonymous »

У нас есть данные вызова REST API, сохраненные в выходном файле, который выглядит следующим образом:
Пример входного файла:

Код: Выделить всё

test test123 - test (bla bla1 (On chutti))
test test123 bla12 teeee (Rinku Singh)
balle balle (testagain) (Rohit Sharma)
test test123 test1111 test45345 (Surya) (Virat kohli (Lagaan))
testagain blae kaun hai ye banda (Ranbir kapoor (Lagaan), Milkha Singh (On chutti) (Lagaan))
Ожидаемый результат: В выводе НЕТ разделителя, поскольку в Python он появлялся в группах захвата. В случае awk ИЛИ без записи решения группы можно разделить с помощью ,.

Код: Выделить всё

bla bla1
Rinku Singh
Rohit Sharma
Virat kohli
Ranbir kapoor Milkha Singh
Условия получения ожидаемого результата:
  • Всегда учитывайте последнее появление круглых скобок () в каждой строке. Нам нужно извлечь значения в этой последней, самой внешней паре круглых скобок.
  • Внутри последнего вхождения () извлеките все значения, которые появляются перед каждым вхождением вложенных круглых скобок ().
    Например: test test123 - test (bla bla1 (On chutti)) последняя скобка начинается с (bla до до chutti)) поэтому мне нужно bla bla1, поскольку он находится перед внутренним (на чутти). Итак, найдите последнюю скобку, а затем внутри того количества пар скобок, которые нам нужны, чтобы получить данные перед ними, например: в строке testagain blae kaun hai yebanda (Ранбир Капур (Лагаан), Милкха Сингх (Он чутти) (Лагаан))< /code> необходимы Ранбир Капур и Милкха Сингх.
Попытка регулярного выражения:
Я попробовал использовать следующее регулярное выражение в рабочей демонстрации регулярного выражения:
Регулярное выражение:

Код: Выделить всё

^(?:^[^(]+\([^)]+\) \(([^(]+)\([^)]+\)\))|[^(]+\(([^(]+)\([^)]+\),\s([^\(]+)\([^)]+\)\s\([^\)]+\)\)|(?:(?:.*?)\((.*?)\(.*?\)\))|(?:[^(]+\(([^)]+)\))$
Регулярное выражение, которое я пробовал, работает нормально, но я хочу улучшить его с помощью советов экспертов.
Предпочитаемые языки: Ищете улучшение этого регулярного выражения ИЛИ Python, ответ awk тоже подойдет. Я сам тоже попробую добавить awk ответ.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ected-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»