所以我使用以下正则表达式解析文本并从特定字典中获取信息:
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
我怎样才能以这种方式替换?
答案 0 :(得分: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)