Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 用修改的正则表达式替换pandas列中的正则表达式匹配_Regex_Pandas_Replace - Fatal编程技术网

Regex 用修改的正则表达式替换pandas列中的正则表达式匹配

Regex 用修改的正则表达式替换pandas列中的正则表达式匹配,regex,pandas,replace,Regex,Pandas,Replace,我正在尝试用修改后的正则表达式替换正则表达式匹配项。 以下是我的数据框中的列 df['newcolumn'] 0 Ther was a quick brown appl_product_type in ("eds") where blah blan appl_Cust_type =("value","value") 1 Ther was a quick brown appl_product_type = ("EDS") where blah blan appl

我正在尝试用修改后的正则表达式替换正则表达式匹配项。 以下是我的数据框中的列

    df['newcolumn']
    0    Ther was a quick brown appl_product_type in ("eds") where blah blan appl_Cust_type =("value","value")
    1    Ther was a quick brown appl_product_type = ("EDS") where blah blan appl_Cust_type =("value","value") 
    2    Ther was a quick brown appl_product_type in ("eds") where blah b                                     
    3    Ther was a quick brown appl_product_type in = ("EDS") where blah blan appl_Cust_type = ("value")     
    4    Ther was a quick brown  where blah blan appl_Cust_type                                               
    Name: newcolumn, dtype: object
我想将所有出现的字符串(如appl\U product\U type='EDS)替换为“upperappl\U product\U type='EDS”

我正在使用以下代码,但出现错误

    newcolumn.replace(value='upper\[\w]+\s+[in=]+[\s+\([\"\w+\,+\s+]+\)', regex='[\w]+\s+[in=]+[\s+\([\"\w+\,+\s+]+\)')
    error: bad escape \w at position 7
有没有办法解决这个问题??请帮忙。

几件事-

您不能在替换值中使用\w并期望它知道要填写什么 您的正则表达式格式不正确。使用r生成更简单的正则表达式字符串 你的问题不清楚,因为你问的是一种特定的格式,而你的正则表达式试图捕捉更多。 对于你所尝试的,我有一个稍微更清晰的解决方案,但鉴于你问题的模糊性,我不确定这是否正是你想要的-

df['newcolumn'] = df['newcolumn'].replace({r'([\w_]+\s+(?:in|=|\s)+\(\"(?:\w+\"(?:\,)?(?:\s+)?)+\))' : r'upper(\1)'}, regex=True)

为什么要在替换中使用\w?您应该使用组匹配来代替。非常感谢您的回答。它按预期工作。只是我不明白替换键中的\1在做什么。我已经编辑了问题。我只希望正则表达式匹配整个字符串并替换为upperappl\u product\u type=eds@deepakkumar这不是问题,在正则表达式替换中,可以使用\1、\2等替换正则表达式中的匹配组。因为我用和包围了正则表达式,这是唯一的匹配组\1作为整个正则表达式匹配的替代。我使用了许多不匹配的组?:以避免与组混淆