尝试在正则表达式中转义括号时收到 PEP8“无效转义序列”警告

Jac*_*nte 7 python regex pep8 python-re

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

string = re.split(")(", other_string)
Run Code Online (Sandbox Code Playgroud)

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

string = re.split("\)\(", other_string)
Run Code Online (Sandbox Code Playgroud)

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

将 'r' 放在字符串前面并不能修复它。

Tre*_*ker 12

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

请参阅:如何在 Python 中修复“<string> DeprecationWarning: invalid escape sequence”?以及。

您正在处理的是字符串文字,可以在PEP 8 样式指南中看到

更新有问题的编辑:

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

import re

string = r"Hello my darling)(!"
print(string)
string = re.split(r'\)\(', string)
print(string)
Run Code Online (Sandbox Code Playgroud)

哪些输出:

Hello )(world!
['Hello ', 'world!']
Run Code Online (Sandbox Code Playgroud)

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

import re

string = r"Hello )(world!"
print(string)
string = re.split('\\)\\(', string)
print(string)
Run Code Online (Sandbox Code Playgroud)

输出相同的东西:

Hello )(world!
['Hello ', 'world!']
Run Code Online (Sandbox Code Playgroud)

  • 原始字符串格式 r"str" 似乎无法解决 Python 3.8 中的问题,但双反斜杠效果很好,谢谢! (2认同)