为什么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
"和"\"d\"
"是一样的,因为d
没有转义序列。但对于代码读者来说不够清晰。
然而,考虑到\t
,"\\t
"代表制表符,而r"\\t"
代表字面上的\
和t
字符。
因此,在表示字面上的\
和d
时,请使用原始字符串:
re.compile(r"\d{3}")
或者显式地转义反斜杠:
re.compile("\\d{3}")
Python 无法将 '\d'
解析为转义序列,这就是它产生警告的原因。
之后,它被传递给正则表达式解析器,字面上能够很好地作为正则表达式匹配元素使用。
\
有意义,则始终是双重转义。这样,任何真正的错误都会被注意到。 - Cornelius Roemer
\d
和\\d
并不相同。前者匹配任何(Unicode)数字;后者匹配反斜杠后跟着的字母"d"。它们并不等同。Pylint似乎在这里错了。 - Marek Jedliński'\d' == '\\d'
пјҢиҝҳеҸҜд»Ҙиҫ“е…Ҙ'\t' == '\\t'
жқҘжҜ”иҫғе®ғ们жҳҜеҗҰзӣёзӯүгҖӮиҜ·жіЁж„ҸпјҢиҝҷжҳҜдёҖжқЎзҝ»иҜ‘иҜ·жұӮпјҢдёҚеҢ…жӢ¬е…¶д»–д»»дҪ•еҶ…е®№гҖӮ - falsetru