コードの次の文字列で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'
をエスケープシーケンスとして解析できないため、警告が生成されます。
その後、文字通り正規表現パーサーに渡され、ESとして正常に動作します。正規表現用。