为什么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}
是有效的正则表达式。
答案 0 :(得分:56)
"\d"
与"\\d"
相同,因为d
没有转义序列。但是代码的读者并不清楚。
但是,请考虑\t
。 "\t"
代表标签字符,而r"\t"
代表文字\
和t
字符。
因此,当你的意思是文字\
和d
时,请使用原始字符串:
re.compile(r"\d{3}")
或明确地反斜杠:
re.compile("\\d{3}")
答案 1 :(得分:1)
Python无法将'\d'
解析为转义序列,这就是它产生警告的原因。
此后,将其按字面意思传递给regex解析器,就可以正常工作。用于正则表达式。