programar - visual studio python
¿Hay alguna diferencia entre los prefijos de cadena r y r en Python? (2)
En general, Python distingue entre mayúsculas y minúsculas. Sin embargo, según la especificación de sintaxis literal de la cadena , los prefijos de cadena pueden ser mayúsculas y minúsculas (u orden). Así que la diferencia es visual, aunque la tradición es sobre todo usar minúsculas, y las letras mayúsculas pueden ser más difíciles de distinguir.
Visual Studio Code resalta los literales de cadena con los prefijos r
y R
diferente:
Match = re.search(r"/d{2} /d{4} /d{2}:/d{2}:/d{2})", Output)
Match = re.search(R"/d{2} /d(4} /d{2}:/d{2}:/d{2})", Output)
¿Hay alguna diferencia de significado entre estas dos notaciones? ¿Se usan diferentes convenciones para r
y R
?
No hay diferencia de significado entre estas notaciones. Reference :
Tanto los literales de cadena como de bytes se pueden prefijar opcionalmente con una letra ''r'' o ''R''; tales cadenas se llaman cadenas sin procesar y tratan las barras invertidas como caracteres literales
Ahora con respecto al comportamiento de VSCode:
- el primer coloreado (con amarillo
{2}
) ocurre cuando el editor asume que estás escribiendo una expresión regular, - el segundo (con azul
{2}
) sucede cuando el editor cree que estás escribiendo una cadena de formato, algo así como"{0}, {1}!".format("Hello", "world")
.
Esto se vuelve más obvio cuando agregamos más sintaxis:
Ahora, parece que VSCode debería tratar R"literal"
igual que r"literal"
, pero en cambio lo colorea igual que "literal"
, que es probablemente un pequeño error que nadie detectó porque todos escriben en minúscula r
.