Python lambda if语句re.sub

2024-05-18 07:13:23 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我使用以下regex解析文本并从特定字典中获取信息:

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

我想做的是,只有当它要替换的是一个单独字典中的键时,它才被替换。从逻辑上看,它应该是这样的:

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

现在,如果要运行以下命令,将出现以下语法错误:

>>> 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

我怎样才能用这种方式替换?


Tags: lambdatextin文本命令reif字典
1条回答
网友
1楼 · 发布于 2024-05-18 07:13:23

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)

相关问题 更多 >