如何同时满足"[FLAKE8 W605] invalid escape sequence '\.'"和字符串格式要求?

8
我在Python中遇到了一个问题。我的原始正则表达式是:
f"regex(metrics_api_failure\.prod\.[\w_]+\.{method_name}\.\d+\.\d+\.[\w_]+\.[\w_]+\.sum\.60)"

method_name 是一个局部变量),我收到了一个代码检查警告:
"[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} 变成了字符串类型,而不是传入的变量。

有人有解决这个困境的想法吗?


有人有解决这个困境的想法吗?你尝试使用两个前缀了吗? - Karl Knechtel
1个回答

18

传入表达式:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接