Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果正则表达式匹配,则替换字符串,并替换为它匹配的其他正则表达式_Python_Regex - Fatal编程技术网

Python 如果正则表达式匹配,则替换字符串,并替换为它匹配的其他正则表达式

Python 如果正则表达式匹配,则替换字符串,并替换为它匹配的其他正则表达式,python,regex,Python,Regex,我试图在满足某些条件后创建dict。以下是代码片段: def dic_gen(exc): param_errors = {re.sub(r"sss_", r"aaa_",err.name): err.address for err in exc.errors } param_errors["status"] = "ERROR" return param_errors 上面的代码所做的是检查err.name是否有sss,然后将其删除并创建一个dict。现在我还想添加另一个

我试图在满足某些条件后创建dict。以下是代码片段:

def dic_gen(exc):
    param_errors = {re.sub(r"sss_", r"aaa_",err.name): err.address for err in exc.errors }
    param_errors["status"] = "ERROR"
    return param_errors
上面的代码所做的是检查err.name是否有sss,然后将其删除并创建一个dict。现在我还想添加另一个条件,即如果它有“ttt”,则将其替换为“bbb”,是否可以使用re.sub?或者最有效的方法是什么


谢谢,

我不知道您打算如何使用re,但我会使用:

abc = "Something_sss whatever"
result = abc.replace("_sss","_ttt")
print result
结果:

"Something_ttt whatever"
通过传递
re.sub()
一个函数而不是替换字符串,您可以这样做:

def func(matchobj):
    return 'aaa_' if matchobj.group(0) == 'sss_' else 'bbb_'

def dic_gen(exc):
    param_errors = {re.sub(r'(sss_)|(ttt_)', func, err.name):
                       err.address for err in exc.errors}
    param_errors["status"] = "ERROR"
    return param_errors
由于函数只是一个表达式,因此可以使用它生成一个
lambda
,并避免外部函数定义(尽管它会降低代码的可读性):


我想做的是,如果err.name中有sss_uuu,那么用aaa_u替换它,如果它的ttt_uuu,那么用bbb_u替换它。因为我在循环exc值,我想也许有一些内置的方法可以更有效地执行。
def dic_gen(exc):
    param_errors = {re.sub(r'(sss_)|(ttt_)', 
        lambda mo: 'aaa_' if mo.group(0) == 'sss_' else 'bbb_', err.name):
        err.address for err in exc.errors}
    param_errors["status"] = "ERROR"
    return param_errors