Как я могу извлечь круглые скобки и промежуточный текст?

#python #regex

#python #регулярное выражение

Вопрос:

Я пытаюсь извлечь текст между круглыми скобками с ( включением и ) включением в Python.

Я использую следующий код:

 inspectionsData['test']=inspectionsData['PE DESCRIPTION'].str.extract(r'.*((.*)).*')
 

Однако он возвращает только промежуточный текст.

На этом скриншоте показано несколько примеров формата строки, которую я хочу извлечь:

Примеры строки

Комментарии:

1. Не могли бы вы предоставить образец df и ожидаемый результат?

Ответ №1:

Переместите символы ( и ) , соответствующие скобкам, в блок захвата:

 r'.*((.*)).*'
 

Комментарии:

1. Не могли бы вы посоветовать, как я мог бы удалить ту же часть для столбца? Я попробовал следующее, но он удаляет всю строку, а не вложенную. inspectionsData['PE DESCRIPTION'].str.replace(r'.*((.*)).*,' '')

2. . * в начале и конце вашего регулярного выражения все совпадает до / после параграфов. Вы можете удалить их, чтобы они соответствовали только части внутри круглых скобок.

Ответ №2:

Вы можете сделать это просто с помощью встроенной re библиотеки регулярных выражений:

 import re

def main():
    txt = "FOOD MKT RETAIL (1-1,999 SF) HIGH RISK"
    pattern = "(.*)"

    matched = re.findall(pattern, txt)
    first_match = matched[0]

    print("first_match: ", first_match)

if __name__ == "__main__":
    main()
 

Вывод:

 first_match:  (1-1,999 SF)
 

Ответ №3:

Ваши экранированные круглые скобки неверны. Вам нужно поместить группирующую скобку вокруг экранированной круглой скобки ( и ) . Экранированные круглые скобки соответствуют фактическим символам круглых скобок в строке.

Это должно это исправить.

 inspectionsData['test']=inspectionsData['PE DESCRIPTION'].str.extract(r'.*((.*)).*')
 

Комментарии:

1. Не могли бы вы посоветовать, как я мог бы удалить ту же часть для столбца? Я попробовал следующее, но он удаляет всю строку, а не вложенную. inspectionsData['PE DESCRIPTION'].str.extract(r'.*((.*)).*')