仅删除嵌套括号中的括号
Remove only parentheses in nested parentheses
我有一堆格式无效的解析树,其中的单词用括号括起来。
string = (NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))
我试过去掉里面没有单词的括号,结果我把它们都去掉了。
re.sub(r'[\(\)]','',string)
这也行不通。
re.sub(r'\s\(.*\)\))
因为我认为基于第二个右括号的模式像
(Police)) (for)) (*)) (secure)) (olympic games))
我想删除单词两侧的括号,而不是像这样删除单词。有帮助吗?
result = (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))
您可以使用
re.sub(r'\(([^()]*)\)', r'', s)
参见regex demo。
详情
\(
- 一个 (
字符
([^()]*)
- 第 1 组(</code> 指的是替换模式中的该组值):除括号 </li> 之外的 0 个或更多字符
<li><code>\)
-
import re
s = "(NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))"
print(re.sub(r'\(([^()]*)\)', r'', s))
# => (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))
我有一堆格式无效的解析树,其中的单词用括号括起来。
string = (NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))
我试过去掉里面没有单词的括号,结果我把它们都去掉了。
re.sub(r'[\(\)]','',string)
这也行不通。
re.sub(r'\s\(.*\)\))
因为我认为基于第二个右括号的模式像
(Police)) (for)) (*)) (secure)) (olympic games))
我想删除单词两侧的括号,而不是像这样删除单词。有帮助吗?
result = (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))
您可以使用
re.sub(r'\(([^()]*)\)', r'', s)
参见regex demo。
详情
\(
- 一个(
字符([^()]*)
- 第 1 组(</code> 指的是替换模式中的该组值):除括号 </li> 之外的 0 个或更多字符 <li><code>\)
-
import re
s = "(NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))"
print(re.sub(r'\(([^()]*)\)', r'', s))
# => (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))