До: Жвачка с перцем (уп. 3шт)
После: Жвачка с перцем
До: Жвачка с перцем (уп. 3шт)
После: Жвачка с перцем
Если скобки не могут быть вложены, то чтобы убрать скобки и всё что между ними из строки text:
import re
text = re.sub(r'\([^()]*\)', '', text)
Если скобки могут быть вложены:
def remove_text_between_parens(text):
n = 1 # run at least once
while n:
text, n = re.subn(r'\([^()]*\)', '', text) # remove non-nested/flat balanced parts
return text
Пример:
>>> remove_text_between_parens("(внутри) снаружи (текст (вложеный))")
' снаружи '
См. также:
Добрый день, для конкретного примера, работает вот это: Единственное, чего не должно быть - повторяющихся скобок (( или ( text(:
#До: Жвачка с перцем (уп. 3шт) После: Жвачка с перцем
#Monkey code
#Работает только тогда когжа есть "( " и ")" в тексте, в одном экземпляре
#> a=input("Enter your string with (): ")
#>c=list(a)
#>while ("(" in c)==True:
#> s1=c.index("(")
#> while c[s1]!=")":
#> c.pop(s1)
#> c.remove(")")
#> if c[s1-1]==" ": #s1-1 чтобы удалить пробел
#> c.pop(s1-1)
#>print(''.join(c))
>#**********Простая реализация кода***********#
>#s=input()
>#s = s[:s.index('(')] + s[s.index(')')+1:]
>#print(s)
>#***Попытка избавиться от О(n^2) алгоритма**#
>a=input()
>c=list(a)
>s1=c.index('(')
>while (")" in c):
> c.pop(s1)
>c="".join(c)
>c.strip(" ")
>print(c)
() ровно один раз встречаются в нужном порядке: s = s[:s.index('(')] + s[s.index(')')+1:], где s = '...(...)...' 1- что заставило вас написать ("(" in c) == True вместо "(" in c? 2- c.pop(s1) это O(n) операция , что делает алгоритм O(n**2) без необходимости, даже если скобки не вложены. Посмотрите, пример почему линейный алгоритм может быть лучше квадратичного 3- нет условия удалить пробел (лучше .strip() вызвать, если необходимо.
– jfs
Apr 30 '17 at 09:19
Искал функцию, которая удалит из скобок только квадратных [text]. По примеру ответа @jfs методом тыка подогнал под необходимый результат (удалить все квадратные скобки и все что в них):
text = re.sub(r'\[[^\]]+\]', '', text)
А мне так когда-то помогло:
import re
s = "Жвачка с перцем (уп. 3шт)"
r = re.sub(r'([^)]*)', '', s)
print(r)
Вывод
Жвачка с перцем
>>> и добавить import); 2) смотрите следующий вход https://repl.it/repls/WhimsicalOtherComputergamesЖвачка с перцем (уп.(123) 3шт), на котором ваш код выдаёт Жвачка с перцем 3шт)
– dIm0n
Sep 13 '20 at 16:43