как заменить круглые скобки "()" пробелом, если символы до и после не являются пробелами, иначе убрать круглые скобки - PullRequest
2 голосов
/ 06 мая 2019

я хочу, чтобы мой текст конвертировался в args deep deep peed

    import re
    originalFile = "args(deep) ( deep ) peed)"
    print(originalFile)
    originalFile = re.sub(r'((\s+)[\( \)])',r'', re.sub(r'([A-Za-z0-                9][\( \)])',r' ', originalFile))
    print(originalFile)

но при запуске кода я получаю вывод

    args(deeo) ( deep ) peed)
    arg dee dee pee

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Вы можете использовать регулярное выражение, подобное следующему (с пробелом в качестве замены), с последующим вызовом strip() сразу после:

\s*[()][\s()]*

См. Демоверсию regex .

Regex details

  • \s* - 0+ пробелов
  • [()] - ) или (
  • [\s()]* - 0+ пробелов, ( или ) символов.

Python demo :

import re
originalFile = "args(deep) ( deep ) peed)"
print(re.sub(r"\s*[()][\s()]*", " ", originalFile).strip())
# => args deep deep peed
0 голосов
/ 06 мая 2019

Метод 1

Вы можете заменить каждую скобку пробелом, а затем отфильтровать несколько пробелов:

import re
t = t.replace("(", " ")
t = t.replace(")", " ")
re.sub(' +', ' ', t)

Метод 2

Используйте следующее regex :

re.sub("(\s*[()]\s*)+", " ", t) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...