Предупреждение pep8 для строки регулярного выражения в Python, Eclipse
Почему 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}
является допустимым регулярным выражением.
Ответы
Ответ 1
"\d"
совпадает с "\\d"
, потому что для d
нет escape-последовательности. Но читателю этого кода не ясно.
Но рассмотрим \t
. "\t"
представляют собой разделитель таблеток, а r"\t"
представляют символы буквального \
и t
.
Поэтому используйте исходную строку, когда вы имеете в виду буквальный \
и d
:
re.compile(r"\d{3}")
или явно выполнить обратную косую черту:
re.compile("\\d{3}")