Python和正则表达式删除文件中的括号

时间:2015-09-24 15:46:42

标签: python

带有大约2000(texthere)括号的xml文件。我需要删除其中的括号和文本。我试过但收到错误:(

DECLARE @d DATE = '20150924'
SELECT CASE WHEN DAY(@d) < 20 
            THEN DATEADD(mm, 1, DATEADD(dd, -DAY(@d) + 1, @d)) 
            ELSE DATEADD(mm, 2, DATEADD(dd, -DAY(@d) + 1, @d)) END;

和我的错误:

import re, sys

    fileName = (sys.argv[2])


    with open(fileName) as f:

        input = f.read()
        output = re.sub(r'\(\w*\)', '', input)
        print fileName + " cleaned of all parenthesis"

我更改了(sys.argv [1])...我没有错误但是我的file.xml中的括号也没有被删除?

2 个答案:

答案 0 :(得分:1)

你有嵌套的parens吗?

stuff (words (inside (other) words) eww)

你会有多组parens吗?

stuff (first group) stuff (second group)

parens中的文字是否有空格?

stuff (single_word)
stuff (multiple words)

一个简单的正则表达式可能是\(.*?\),尽管你会看到嵌套的parens没有被捕获(如果你不期望嵌套的parens那就没问题):

https://regex101.com/r/kB2lU1/1

修改

https://regex101.com/r/kB2lU1/2可能能够处理其中一些嵌套的parens,但仍可能会因不同类型的边缘情况而中断。

您需要指定您期望的边缘情况,以便根据您的需求更好地定制答案。

答案 1 :(得分:1)

由于您按以下方式调用脚本:

python removeparenthesis.py filename.xml

XML文件名将显示在sys.argv[1]下。

此外,您需要在模式中使用延迟匹配:

r'\(\w*?\)'    # notice the ?

更好的模式是:

r'\([^)]*\)'