me he encontrado con un problema re
módulo en Python 3.6.5. Tengo este patrón en mi expresión regular:
'\\nRevision: (\d+)\\n'
Pero cuando lo ejecuto, obtengo un DeprecationWarning
.
Busqué el problema en SO y, en realidad, no encontré la respuesta: ¿qué debo usar en lugar de \d+
? Sólo [0-9]+
o tal vez algo más?
Python 3 interpreta los literales de cadena como cadenas Unicode y, por lo tanto, su \d
se trata como un carácter Unicode escapado.
Declare su patrón RegEx como una cadena sin formato en lugar de anteponer r
como a continuación:
r'\nRevision: (\d+)\n'
Esto también significa que puede soltar los escapes para \n
también, ya que estos solo serán analizados como caracteres de nueva línea por re
.
Recibe una advertencia de depreciación para
'\\nRevision: (\d+)\\n'
porque Python interpreta \d
como secuencia de escape no válida. Tal como está, Python no sustituye esa subcadena, pero advierte al respecto desde la versión 3.6:
A diferencia del Estándar C, todas las secuencias de escape no reconocidas se dejan en la cadena sin cambios, es decir, la barra invertida se deja en el resultado. (Este comportamiento es útil durante la depuración: si una secuencia de escape está mal escrita, la salida resultante se reconoce más fácilmente como rota). También es importante tener en cuenta que las secuencias de escape solo reconocidas en cadenas literales entran en la categoría de escapes no reconocidos para bytes literales.
Cambiado en la versión 3.6: Las secuencias de escape no reconocidas generan una advertencia de desaprobación. En una versión futura de Python, serán un SyntaxWarning y eventualmente un SyntaxError.
(fuente)
Por lo tanto, puede corregir esta advertencia ya sea escapando de esa barra invertida correctamente o usando cadenas sin formato.
Eso significa, escapar más:
'\\nRevision: (\\d+)\\n'
O utilice un literal de cadena sin procesar (donde \
no inicia una secuencia de escape):
r'\nRevision: (\d+)\n'
No debería ser el problema, ¿proporcionar más código?
– Sara
24 de mayo de 2018 a las 8:30
Doble escape
\d
o usarr'\\nRevision: (\d+)\\n'
?– revo
24 de mayo de 2018 a las 8:33