Python lambda if语句re.sub

Rya*_*axe 7 python regex lambda replace

所以我使用以下正则表达式来解析文本并从特定字典中获取信息:

re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1],text)
Run Code Online (Sandbox Code Playgroud)

我想要做的只是替换它取代它是一个单独的字典中的键.逻辑上它看起来像这样:

re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
Run Code Online (Sandbox Code Playgroud)

现在,如果我要运行以下命令,我会收到以下语法错误:

>>> re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
  File "<stdin>", line 1
    re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
                                                                                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我怎么才能这样替换?

Bre*_*arn 12

if表达总是需要的else.您始终必须替换匹配的文本.如果您不想更换它,您只需要将其替换为自己:

re.sub(r'(<Q\d+>)', 
  (lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d else m.group(1)), text)
Run Code Online (Sandbox Code Playgroud)