获取 PEP8 "invalid escape sequence" 警告试图在正则表达式中转义括号

Getting PEP8 "invalid escape sequence" warning trying to escape parentheses in a regex

我正在尝试转义这样的字符串:

string = re.split(")(", other_string)

因为不转义那些括号会给我一个错误。但如果我这样做:

string = re.split("\)\(", other_string)

我收到来自 PEP8 的警告,它是一个无效的转义序列。有没有办法正确地做到这一点?

将 'r' 放在字符串前面并不能解决问题。

您可能正在寻找 this,这意味着您的字符串将被写为 string = r")(",这将被转义。尽管那是从 2008 年开始的,并且在 python 2 中正在逐步淘汰。 r 所做的是使它成为 "raw string"

参见:

您正在处理的是字符串文字,可以在 PEP 8 Style Guide

中看到

问题编辑更新:

如果您尝试在 ")(" 上拆分,那么这是一个不会引发 PEP8 警告的工作示例:

import re

string = r"Hello my darling)(!"
print(string)
string = re.split(r'\)\(', string)
print(string)

输出:

Hello )(world!
['Hello ', 'world!']

或者您可以使用两个反斜杠显式转义反斜杠:

import re

string = r"Hello )(world!"
print(string)
string = re.split('\)\(', string)
print(string)

输出相同的东西:

Hello )(world!
['Hello ', 'world!']