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

Aur*_*ora 10 python regex flake8

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

f"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"
Run Code Online (Sandbox Code Playgroud)

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

"[FLAKE8 W605] invalid escape sequence '\.'Arc(W605)" 
Run Code Online (Sandbox Code Playgroud)

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

r"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"
Run Code Online (Sandbox Code Playgroud)

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

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

小智 20

传入表达式:

r"regex(metrics_api_failure\.prod\.[\w_]+\." + method_name + r"\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"
Run Code Online (Sandbox Code Playgroud)

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

或使用原始格式字符串:

rf"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"
Run Code Online (Sandbox Code Playgroud)