¿Por qué es pep8 quejándose en la siguiente cadena en el código?

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

La advertencia que recibe:

ID:W1401  Anomalous backslash in string: '\d'. String constant might be missing an r prefix.

Puede explicar cuál es el significado del mensaje? ¿Qué necesito para cambiar el código para que la advertencia W1401 pasa?

El código pasa las pruebas y se ejecuta como se esperaba. Por otra parte \d{3} es válido regex.

InformationsquelleAutor alandarev | 2013-09-26

2 Comentarios

  1. 62

    "\d" es la misma que la "\\d" porque no hay ninguna secuencia de escape para d. Pero no está claro para el lector del código.

    Pero, considere la posibilidad de \t. "\t" representan ficha chracter, mientras que r"\t" representan literal \ y t carácter.

    Para su uso en crudo, cadena de cuando te refieres literal \ y d:

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

    o de escape de barra diagonal inversa explícitamente:

    re.compile("\d{3}")
    • Gracias, no tenía ni idea sobre el prefijo » r » y su funcionalidad.
    • Llegar tarde, pero \d no es en absoluto la misma que \\d. El ex coincide con cualquier (Unicode) dígitos; el segundo coincide con una barra invertida seguida por d. Que no son equivalentes. Pylint parece estar en el mal aquí.
    • Trate de '\d' == '\\d' en el shell interactivo de python. También '\t' == '\\t'
  2. 1

    Python es incapaz de analizar '\d' como una secuencia de escape, por eso se produce una alarma.

    Después de que ha pasado abajo para regex analizador literalmente, funciona bien como una E. S. para regex.

Dejar respuesta

Please enter your comment!
Please enter your name here