Las cadenas de texto, o strings, las delimitamos en Python encerrándolas entre comillas. Por lo general, estas pueden ser simples o dobles, da igual cuáles empleemos (con la condición de que la comilla que abre sea del mismo tipo que la que cierra, por supuesto). En los ejemplos que he incluido en esta serie me habréis visto usar un tipo u otro indistintamente.
La ventaja de poder elegir entre comillas simples o dobles la encontramos cuando necesitemos anidar unas comillas dentro de otras. Observad el siguiente ejemplo:
>>> >>> print('Una de mis series favoritas era "La casa de la pradera".')
Una de mis series favoritas era "La casa de la pradera".
Esto lo hemos podido conseguir utilizando el par interior de comillas de tipo diferente a la que abre y cierra el string, de modo que Python no puede confundirse a la hora de delimitar el fin de la cadena.
Pero, ¿como haríamos si necesitáramos imprimir las propias comillas simples o dobles, con libertad, dentro de un string?
La solución pasa por utilizar «caracteres de escape». Referenciamos las comillas simples y dobles precediéndolas de un backslash (\), de modo que Python ignore su significado habitual delimitando strings.
Para escribir una comilla simple, emplearíamos \’ y, para una doble, \».
Por ejemplo:
>>> print('Una de mis canciones favoritas de Beatles es "Maxwell\'s silver hammer".')
Una de mis canciones favoritas de Beatles es "Maxwell's silver hammer".
Existe un problema al escribir strings largos, y es que deben estar en la misma línea de código, pues Python interpretaría una pulsación de Enter como una nueva línea de código.
Si, por cuestiones de comodidad, necesitamos «partir» nuestro código, continuando en una nueva línea física, pero que forme parte de la misma línea lógica, podemos hacerlo terminando la línea física con el carácter de escape \ y pulsando Enter a continuación.
Observadlo en este ejemplo:
>>> print('Una de mis canciones favoritas de Beatles \
es "Maxwell\'s silver hammer".')
Una de mis canciones favoritas de Beatles es "Maxwell's silver hammer".
¿Cómo manejaríamos un string que estuviera compuesto por varias líneas? La solución obvia sería emplear un string por línea, pero ¿cómo lo hacemos para que figure todo en la misma cadena?
Existe un carácter de escape para una nueva línea, y es \n. Fijaos en el siguiente código:
>>> print('La receta auténtica del alioli:\n- Ajo\n- Aceite')
La receta auténtica del alioli:
- Ajo
- Aceite
También disponemos de un carácter de escape para el tabulador: \t.
>>> print('Manzana\tPera\tCiruela\nMelón\tSandía\tFresa')
Manzana Pera Ciruela
Melón Sandía Fresa
No obstante, cuando la cadena es larga, este método de formateo resulta complejo. Ahí es donde surge un nuevo invitado a la escena: la comilla triple.
La comilla triple nos permite insertar un string con todas las líneas que deseemos. Basta que enmarquemos un bloque de texto entre comillas triples (da igual si son simples o dobles) y Python respetará el aspecto y formato completo del texto.
Veámoslo en el siguiente ejemplo:
>>> print("""
Una de mis series favoritas era "La casa de la pradera"
Una de mis canciones favoritas de Beatles es "Maxwell's silver hammer"
Manzana Pera Ciruela
Melón Sandía Fresa""")
Una de mis series favoritas era "La casa de la pradera"
Una de mis canciones favoritas de Beatles es "Maxwell's silver hammer"
Manzana Pera Ciruela
Melón Sandía Fresa
Todo eso en un único string.
Observad cómo no he necesitado preocuparme del anidado de comillas, ni tan siquiera de escapar la comilla de Maxwell’s.
Interesante, ¿verdad?
Python está repleto de sutilezas así que hacen que la labor de programar sea un ejercicio eficaz y sumamente divertido a la vez.
Javier Montero
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Hey! Gracias por esta información, me sirvio mucho para estos momentos en los que apenas comienzo en Python y veo que algunos ejemplos vienen con » otros con ‘ y bueno ahora se de la ultilidad del \ o tambien del \n o \t y tambien de las triple comillas =) Gracias 😀
Qué tal, Jesús:
Me alegro de haberte sido útil en tus comienzos con Python. Ya te habrás dado cuenta de que es un lenguaje completamente diferente a cualquier otro.
Mucha suerte y te animo a que te conviertas en un gran programador Python. 😉
Hola, gracias por el ejemplo de la triple comilla, ahora logré entenderlo.
Saludos
Ánimo y trabaja duro con Python, es un lenguaje que merece la pena dominar.
Saludos
Me di cuenta que las triples comillas también sirven para hacer comentarios de varias lineas, sustituyendo de esta forma a la almohadilla #.
Saludos!
Bueno, eso hay que matizarlo. Si los pones al comienzo de un módulo o funcion Python lo tomará como doc string para documentar el programa, de modo que cuando hagas help(modulo) te aparecerá ese texto en el campo DESCRIPTION. Si no es lo que deseas, procura usar comentarios típicos.
¡Saludos!
Gracias por el aclaramiento.
Saludos.
Gracias, me fue muy útil esta información. sobre todo porque estoy empezando a programar con Python 🙂 .
Ánimo entonces. Todo el tiempo y esfuerzo que le dediques a Python valdrá la pena.
Gracias, Daniela.
Muchisimas gracias, me acaban de salvar en el semestre :*
Genial!!! 😉
un pregunta en python tambien se escriben los parentesis o las comillas simultaniamente como en c++, es decir si escribo un parentesis automaticamente me aparece el otro y queda el cursor en medio para escribir dentro?
Eso no es una característica de Python, sino del IDE con el que quieras trabajar.
Saludos
Gracias, buena data.
Mil gracias, interesante sus comentarios
Hola inicio en el mundo de Python, hace años tuve experiencia en C++ y Csharp,pero ya no continué, osea tengo un conocimiento básico. deseo me ayudes como sacar en el teclado de Ubuntu 20.04 las comillas simples y la barra invertida?
Hola buenas me salta este problema pudieran ayudarme de ante mano gracias 🙂
Traceback (most recent call last):
File «/home/hche/Proyectos/Python scrips Curso/herencia.py», line 17, in
print(a)
File «/home/hche/Proyectos/Python scrips Curso/herencia.py», line 8, in __str__
return print(«»»
IndexError: Replacement index 3 out of range for positional args tuple
Ya pude solucionarlo era que me faltaba un atributo en el .format de todas maneras gracias