Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么 pep8 抱怨代码中的下一个字符串?
import re re.compile("\d{3}")
我收到的警告:
ID:W1401 Anomalous backslash in string: '\d'. String constant might be missing an r prefix.
你能解释一下消息的含义吗?我需要在代码中进行哪些更改才能通过W1401警告?
代码通过测试并按预期运行。此外\d{3}是一个有效的正则表达式。
\d{3}
"\d"相同,"\\d"因为 . 没有转义序列d。但是对于代码的读者来说并不清楚。
"\d"
"\\d"
d
但是,考虑\t. "\t"代表制表符,而r"\t"代表文字\和t字符。
\t
"\t"
r"\t"
\
t
因此,当您的意思是文字\和时,请使用原始字符串d:
re.compile(r"\d{3}")
或明确转义反斜杠:
re.compile("\\d{3}")
Python 无法解析'\d'为转义序列,这就是它产生警告的原因。
'\d'
之后,它从字面上传递给正则表达式解析器,作为正则表达式的 ES 可以正常工作。