首页 > 解决方案 > 如何同时满足“[FLAKE8 W605]无效转义序列'\.'”和字符串格式?

问题描述

我在 python 中有一个问题。我原来的正则表达式是:

f"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"

method_name是一个局部变量),我收到了一个 lint 警告:

"[FLAKE8 W605] invalid escape sequence '\.'Arc(W605)" 

这看起来像建议我r用作正则表达式前缀。但如果我这样做:

r"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"

成为字符串类型而{method_name}不是传入的变量。

有谁知道如何解决这个困境?

标签: pythonregex

解决方案


传入表达式:

r"regex(metrics_api_failure\.prod\.[\w_]+\." + method_name + r"\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"

本质上,使用 Python 字符串连接来完成与使用括号相同的事情。然后,r""类型字符串转义应该可以工作。

或使用原始格式字符串:

rf"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"

推荐阅读