在python中,我有一个像
这样的字符串ABC(a =2,bc=2, asdf_3 = None)
通过使用正则表达式,我想使它像
ABC(a =2,bc=2)
我想删除名为'asdf_3'的参数,就是它!
更新:参数可以很多,只有asdf_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)
>>> 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"
。