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