Eclipse中的正则表达式字符串上的pep8警告

时间:2013-09-26 14:25:48

标签: python string eclipse pydev pep8

为什么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}是有效的正则表达式。

2 个答案:

答案 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解析器,就可以正常工作。用于正则表达式。