Secuencias de escape¶
Supongamos que queremos mostrar en la pantalla:
Hola
Adios
Imaginemos que queremos una cadena con los diez caracteres del texto a visualizar:
H
o
l
a
salto
A
d
i
o
s
Tanto los caracteres de espacio como los saltos de línea son un carácter más, que se incluyen como parte del texto a mostrar.
¿Como podemos incluir un carácter de salto en una cadena? No podemos escribir:
texto = "Hola
Adios"
... porque no podemos partir una cadena de texto en dos.
Python proporciona un truco especial:
texto = "Hola\nAdios"
La secuencia "\n" representa un salto de línea (newline), y al evaluar la cadena, el intérprete sustituirá esos dos caracteres por uno de salto:
| Salto.py | |
|---|---|
1 2 | |
al ejecutarse, muestra:
Hola y...
adios
A este tipo de secuencias especiales de caracteres en un literal de texto se les secuencias de escape.
Otras secuencias¶
Las secuencias de escape se utilizan para incluir en una cadena caracteres de dificil representación. Un ejemplo son las comillas y apóstrofos. Si queremos insertar estos caracteres como parte del texto regular, podemos escaparlos con una barra invertida:
| Secuencias1.py | |
|---|---|
1 2 | |
Muestra:
Nos llaman "los mejores del mundo".
Cuando el intérprete encuentra un carácter de barra invertida \ asume que
se trata del comienzo de una secuencia de escape. Pero... ¿como insertar
una barra como texto regular? Con una secuencia \\
| Secuencias2.py | |
|---|---|
1 2 | |
Muestra:
C:\mis documentos
La secuencia \t represenra un carácter de tabulación, lo que equivale
a pulsar Tab. Es una forma muy básica de alinear datos en vertical:
| Secuencias3.py | |
|---|---|
1 2 3 4 5 | |
Muestra:
Puntuaciones:
Andrés: 7
Ana: 8
Teresa: 5.5
Cadenas raw¶
A veces sucede que las secuencias de escape tienen un efecto inesperado:
| Secuencias3.py | |
|---|---|
1 2 | |
lo que muestra:
C:
uevos documentos\doc1.txt
En el texto hay dos barras invertidas \. La segunda secuencia es \d, que
no tiene un significado especial como secuencia de escape, por lo que se
respeta como texto. Pero la primera secuencia \n es sustituida por un salto de
línea.
¿Como hacer que se ignoren las secuencias de escape y se tome el texto de una
cadena tal cual? Poniendo un prefijo r, lo que significa que se trata de una
cadena raw, donde se toma el texto "en crudo":
| Secuencias3.py | |
|---|---|
1 2 | |
Literales multilínea¶
Existe la posibilidad de escribir un literal de texto ocupando varias líneas:
| Chistes.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Lo que, al ejecutarse, muestra:
¿Qué le dice una impresora a otra?
¿Esa hoja es tuya o es una impresión mía?
¿Qué hace una abeja en el gimnasio?
¡Zumba!
¿Cuál es el último animal que subió al arca de Noé?
¡El del fín!
¿Qué le dice un cero a otro cero?
¡No somos nada!
El texto se delimita entre triples comillas, y los saltos de línea se consideran como un carácter que forma parte del texto.
Alternativamente, podemos delimitar el texto entre triples apóstrofos:
chistes = '''
... texto multilínea ...
'''
Es frecuente utilizar la barra invertida como carácter de continuación:
chistes = """\
¿Qué le dice una impresora a otra?
...
lo que sirve para ignorar el salto de línea inicial.
Textos como comentarios¶
Cualquier texto aislado, sin ser asignado a una variable, sin ser pasado como argumento de una función, ni formar parte de una expresión, será ignorado y considerado como comentarios:
"Hola, que tal"
print(5+2)
Como ya vimos en el apartado dedicado a comentarios, esto resulta muy útil en el caso de comentarios multilínea, por ejemplo:
| Comentarios3.py | |
|---|---|
1 2 3 4 5 6 7 8 9 | |