Python 如果在字符串中找到括号,则删除括号和括号内的数据

Python 如果在字符串中找到括号,则删除括号和括号内的数据,python,regex,Python,Regex,我想检测字符串中的括号,如果找到,请删除括号和括号中的所有数据 e、 g Developer(12) 将成为 Developer 编辑:请注意,每次字符串的长度/文本都不同,括号并不总是存在 我可以用类似的方法检测括号 if '(' in mystring: print 'found it' 但是如何删除(12)?您可以使用regex并替换它: >>> re.sub(r'\(.*?\)', '','Developer (12)') 'Developer ' >&

我想检测字符串中的括号,如果找到,请删除括号和括号中的所有数据

e、 g

Developer(12)

将成为

Developer

编辑:请注意,每次字符串的长度/文本都不同,括号并不总是存在

我可以用类似的方法检测括号

if '(' in mystring: 
   print 'found it'

但是如何删除
(12)

您可以使用regex并替换它:

>>> re.sub(r'\(.*?\)', '','Developer (12)')
'Developer '
>>> a='DEf (asd () . as ( as ssdd (12334))'
>>> re.sub(r'\(.*?\)', '','DEf (asd () . as ( as ssdd (12334))')
'DEf  . as )'

我相信你想要这样的东西

import re
a = "developer (12)"
print(re.sub("\(.*\)", "", a))

因为它总是在末尾,并且没有嵌套的括号:

s = "Developer (12)"
s[:s.index('(')]  # or s.index(' (') if you want to get rid of the previous space too

对于嵌套的方括号和字符串中的多对,此解决方案可行

def replace_parenthesis_with_empty_str(str):
    new_str = ""
    stack = []
    in_bracker = False
    for c in str :
        if c == '(' :
            stack.append(c)
            in_bracker = True
            continue
        else:
            if in_bracker == True:
                if c == ')' :
                    stack.pop()
                if not len(stack):
                    in_bracker = False
            else :
                new_str += c
    return new_str

a = "fsdf(ds fOsf(fs)sdfs f(sdfsd)sd fsdf)c  sdsds (sdsd)"
print(replace_parenthesis_with_empty_str(a))

您可能应该使用一个.
slice(0,myString.index(“(”))
括号是否总是在字符串的末尾?是否需要处理嵌套括号?@Franco好的,问题就简单多了。建议的答案可行,但甚至不需要regexp。这与前面的解决方案相同,具有相同的功能limitation@brianpck我没有看到前面的答案就发布了它,但是是的,它是sim卡ilar在op中写道:@S.deMelo—“结尾总是肯定的,没有嵌套的。”。他明确表示他不需要支持嵌套的括号。@leaf当时不是这样的。