Pourquoi pep8 se plaint-il de la chaîne suivante dans le code?
import re
re.compile("\d{3}")
L'avertissement que je reçois:
ID:W1401 Anomalous backslash in string: '\d'. String constant might be missing an r prefix.
Pouvez-vous expliquer quelle est la signification du message? Que dois-je changer dans le code pour que l'avertissement W1401 soit passé?
Le code passe les tests et s'exécute comme prévu. En outre \d{3}
est une expression rationnelle valide.
"\d"
est identique à "\\d"
car il n'y a pas de séquence d'échappement pour d
. Mais ce n'est pas clair pour le lecteur du code.
Mais considérez \t
. "\t"
représente le caractère de tabulation, tandis que r"\t"
représente littéral \
et t
caractère.
Utilisez donc une chaîne brute lorsque vous voulez dire littéral \
et d
:
re.compile(r"\d{3}")
ou échapper explicitement à la barre oblique inverse:
re.compile("\\d{3}")
Python n'est pas en mesure d'analyser '\d'
comme séquence d'échappement, c'est pourquoi elle génère un avertissement.
Après cela, il est transmis littéralement à l'analyseur d'expressions rationnelles, fonctionne très bien comme un E.S. pour regex.