1

我正在尝试拆分一个字符串,例如: add(ten)sub(one) into add(ten) sub(one). 我不知道如何匹配右括号。我已经使用re.sub(r'\\)', '\\) ')了各种转义括号的变体,我能想到。用这种字体很难分辨,但我试图在这些命令之间添加一个空格,以便稍后将其拆分为一个列表。

4

3 回答 3

1
d = ')'
my_str = 'add(ten)sub(one)'
result = [t+d for t in my_str.split(d) if len(t) > 0]

结果 = ['添加(十)','子(一)']

于 2013-09-06T19:28:10.107 回答
1

)在替换字符串中不需要转义,)仅在正则表达式模式中具有特殊的特殊含义,因此需要在此处进行转义以便在字符串中匹配它,但在普通字符串中它可以按原样使用。

>>> strs = "add(ten)sub(one)"
>>> re.sub(r'\)(?=\S)',r') ', strs)
'add(ten) sub(one)'

正如@StevenRumbalski 在评论中指出的那样,上述操作可以简单地使用str.replaceand完成str.rstrip

>>> strs.replace(')',') ').strip()
'add(ten) sub(one)'
于 2013-09-06T19:15:14.810 回答
0

创建所有子字符串的列表

import re

a = 'add(ten)sub(one)'
print [ b for b in re.findall('(.+?\(.+?\))', a) ]

输出:

['add(ten)', 'sub(one)']
于 2013-09-06T19:25:47.073 回答