【发布时间】:2018-04-19 08:12:50
【问题描述】:
我有一个文本文件,例如 -
{[a] abc (b(c)d)}
我想删除这些括号 [] and (()) 之间的内容。所以输出应该是 -
abc
我删除了括号之间的内容,但无法删除 [] 之间的内容
我试过下面的代码-
import re
with open('data.txt') as f:
input = f.read()
line = input.replace("{","")
line = line.replace("}","")
output = re.sub(r'\(.*\)', "", line)
print output
输出是 -
[a] abc
在我的代码中,我首先替换 {},然后从 () 中删除内容。我想在output = re.sub(r'\(.*\)', "", line) 这一行中添加\[.*\]。但找不到这样做的方法。我还在学习python。所以我面临这个问题。请帮忙。
【问题讨论】:
-
你做了
\(.*\)。你也可以\[.*\]。 -
只是一个与此没有直接关系的评论:python 正则表达式并不擅长处理 balanced 括号表达式...
-
@khelwood 我已经编辑了我的问题。
-
@Jan:我知道,但是 AFAIK 标准库只包含旧的
re模块,而 OP 有一个import re行... -
你所有的替换都可以缩短为
re.sub(r'[{}]|\(.*\)|\[.*\]', "", line)