Python:一个正则表达式帮助

时间:2010-10-22 04:05:01

标签: python regex

在python中,我有一个像

这样的字符串
ABC(a =2,bc=2, asdf_3 = None)

通过使用正则表达式,我想使它像

ABC(a =2,bc=2)

我想删除名为'asdf_3'的参数,就是它!

更新:参数可以很多,只有asdf_3在所有情况下都相同,顺序通常是最后一个。

3 个答案:

答案 0 :(得分:0)

import re

foo = 'ABC(a =2,bc=2, asdf_3 = None)'
bar = re.sub(r',?\s+asdf_3\s+=\s+[^,)]+', '', foo)

# bar is now 'ABC(a =2,bc=2,)'

\s+部分可以匹配任意数量的空白,而[^,)]+部分基本上允许它在右侧的任何内容都不会启动另一个参数。

答案 1 :(得分:0)

你正在做功课吗?下次你会付出一些努力,因为你已经问了this

这样的问题
>>> foo.split("asdf_3")[0].strip(", ")+")"
'ABC(a =2,bc=2)'

>>> re.sub(",*\s+asdf_3.*",")",foo)
'ABC(a =2,bc=2)'

答案 2 :(得分:0)

由于你说asdf_3参数只是通常最后一个,我建议如下:

result = re.sub(
    r"""(?x) # verbose regex
    ,?       # match a comma, if present
    \s*      # match spaces, if present
    asdf_3   # match asdf_3
    [^,)]*   # match any number of characters except ) or ,
    """, "", subject)

这假设逗号不能成为asdf_3之后的参数的一部分,e。 G。比如asdf_3 = "foo, bar"