escape - raw string python
¿Qué significa preceder a un literal de cadena con "r"? (2)
El r
significa que la cadena debe tratarse como una cadena sin procesar, lo que significa que todos los códigos de escape serán ignorados.
Para un ejemplo:
''/n''
se tratará como un carácter de nueva línea, mientras que r''/n''
se tratará como los caracteres /
seguidos por n
.
Cuando un prefijo
''r''
o''R''
está presente, un carácter que sigue a una barra invertida se incluye en la cadena sin cambios, y todas las barras invertidas quedan en la cadena. Por ejemplo, la cadena literalr"/n"
consta de dos caracteres: una barra diagonal inversa y una''n''
minúscula. Las comillas de cadena se pueden escapar con una barra diagonal inversa, pero la barra invertida permanece en la cadena; por ejemplo,r"/""
es un literal de cadena válido que consta de dos caracteres: una barra diagonal inversa y una comilla doble;r"/"
no es un literal de cadena válido (incluso una cadena cruda no puede terminar en un número impar de barras diagonales inversas). Específicamente, una cadena sin formato no puede terminar en una sola barra invertida (ya que la barra invertida escaparía del siguiente carácter de comillas). Tenga en cuenta también que una sola barra invertida seguida de una línea nueva se interpreta como esos dos caracteres como parte de la cadena, no como una continuación de línea .
Fuente: literales de cadenas de Python
Esta pregunta ya tiene una respuesta aquí:
La primera vez que lo vi se usó para re.compile()
expresiones regulares en múltiples líneas como argumento de método para re.compile()
, así que asumí que r
significa RegEx.
Por ejemplo:
regex = re.compile(
r''^[A-Z]''
r''[A-Z0-9-]''
r''[A-Z]$'', re.IGNORECASE
)
Entonces, ¿qué significa r
en este caso? ¿Por qué lo necesitamos?
Significa que los escapes no serán traducidos. Por ejemplo:
r''/n''
es una cadena con una barra invertida seguida de la letra n
. (Sin la r
, sería una nueva línea).
b
representa byte-string y se usa en Python 3, donde las cadenas son Unicode por defecto. En Python 2.x, las cadenas eran byte-strings por defecto y usted usaría u
para indicar Unicode.