alerte pep8 sur la chaîne regex en Python, Eclipse

pourquoi pep8 se plaint-il sur la chaîne suivante du 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 ce que signifie le message? Que dois-je modifier dans le code pour que l'avertissement W1401 est-il passé?

le code passe les tests et fonctionne comme prévu. En outre d{3} est un regex valide.

30
demandé sur falsetru 2013-09-26 18:25:47

2 réponses

"\d" est comme "\d" parce qu'il n'y a pas de séquence d'échappement pour d. Mais il n'est pas clair pour le lecteur de code.

mais, considérer \t. "\t" représentent onglet caractère, tandis que r"\t" représentent littérale \ et t personnage.

utilisez donc la chaîne brute quand vous voulez dire littéral \ et d:

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

ou d'échappement barre oblique inverse explicitement:

re.compile("\d{3}")
48
répondu falsetru 2013-09-26 14:33:59

Python est incapable de parser '\d' comme une séquence d'échappement, c'est pourquoi il produit un avertissement.

après cela, il est transmis à regex parser littéralement, fonctionne très bien comme un E. S. pour regex.

0
répondu lazy idiot 2018-07-18 19:07:54