#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'.*((.*)).*')