从python字符串中删除某些字符串块

时间:2014-09-12 05:58:19

标签: python

我有一大堆字符串,我需要根据一些规则进行编辑。其中一条规则是字符串不应包含带括号的块。例如 -

"(Speaking) (Laughing) Get out of here" # Desired output - "Get out of here"

"(Dancing)Where have you been" # Desired output - "Where have you been"

请帮我这样做。

2 个答案:

答案 0 :(得分:1)

一个可能有趣的替代方案是简单的状态机。它也应该非常高效。

c = """(Speaking) (Laughing) Get out of here"""

paren_count = 0
out = []

for char in c:
    if char == "(":
        paren_count += 1
        continue
    elif char == ")":
        paren_count -= 1
        continue
    if paren_count == 0:
        out.append(char)

print "".join(out).strip()

答案 1 :(得分:0)

(?![^()]*\))(?!\s[^a-zA-Z])([a-zA-Z ]+)

您可以使用此正则表达式执行您想要的操作。

参见演示。

http://regex101.com/r/hQ1rP0/12

一样使用它
import re
x="(Speaking) (Laughing) Get out of here"
print re.findall(r"(?![^()]*\))([a-zA-Z ]+)",x)