为什么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}
zkure5ic1#
"\d"与"\\d"相同,因为d没有转义序列。但代码的读者不清楚。但是,考虑\t。"\t"表示制表符,而r"\t"表示文字\和t字符。因此,当您表示文字\和d时,请使用原始字符串:
"\d"
"\\d"
d
\t
"\t"
r"\t"
\
t
re.compile(r"\d{3}")
或转义反斜杠显式:
re.compile("\\d{3}")
hfsqlsce2#
Python无法将'\d'解析为转义序列,这就是它产生警告的原因。之后,它被传递到正则表达式解析器,作为正则表达式的E.S.工作得很好。
'\d'
2条答案
按热度按时间zkure5ic1#
"\d"
与"\\d"
相同,因为d
没有转义序列。但代码的读者不清楚。但是,考虑
\t
。"\t"
表示制表符,而r"\t"
表示文字\
和t
字符。因此,当您表示文字
\
和d
时,请使用原始字符串:或转义反斜杠显式:
hfsqlsce2#
Python无法将
'\d'
解析为转义序列,这就是它产生警告的原因。之后,它被传递到正则表达式解析器,作为正则表达式的E.S.工作得很好。