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

时间:2016-10-10 13:21:25

标签: python regex

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

e.g。

Developer (12)

会变成

Developer

编辑:请注意,每次字符串的长度/文本都不同,并且括号不会一直存在。

我可以使用像

这样的东西来检测括号
if '(' in mystring: 
   print 'found it'

但我如何删除(12)

4 个答案:

答案 0 :(得分:3)

您可以使用正则表达式并替换它:

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

答案 1 :(得分:1)

我相信你想要这样的东西

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

答案 2 :(得分:0)

因为它总是在最后并且没有嵌套括号:

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

答案 3 :(得分:0)

对于嵌套括号和字符串中的多对,此解决方案可以正常工作

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))