web-dev-qa-db-ja.com

Python、Eclipseの正規表現文字列に関する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}は有効な正規表現です。

39
alandarev

dにはエスケープシーケンスがないため、"\d""\\d"と同じです。しかし、コードの読者には明らかではありません。

ただし、\tを検討してください。 "\t"はタブ文字を表し、r"\t"はリテラル\およびt文字を表します。

したがって、リテラル\およびdを意味する場合は、生の文字列を使用します。

re.compile(r"\d{3}")

または明示的にバックスラッシュをエスケープします:

re.compile("\\d{3}")
61
falsetru

Pythonは'\d'をエスケープシーケンスとして解析できないため、警告が生成されます。

その後、文字通り正規表現パーサーに渡され、ESとして正常に動作します。正規表現用。

1
userA789