varias una salto otra multilinea lista lineas linea impresion for escribir continuar codigo agregar python formatting code-formatting

una - ¿Cómo puedo romper esta larga línea en Python?



salto de linea python (4)

¿Cómo harías para formatear una línea larga como esta? Me gustaría que no tenga más de 80 caracteres de ancho:

logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes[''url'']], video.title))

¿Es esta mi mejor opción?

url = "Skipping {0} because its thumbnail was already in our system as {1}." logger.info(url.format(line[indexes[''url'']], video.title))


El compilador se une a los literales de cadena consecutivos y las expresiones entre paréntesis se consideran una sola línea de código:

logger.info("Skipping {0} because it''s thumbnail was " "already in our system as {1}.".format(line[indexes[''url'']], video.title))


Eso es un comienzo. No es una mala práctica definir sus cadenas más largas fuera del código que las usa. Es una forma de separar datos y comportamiento. Su primera opción es unir implícitamente los literales de cadenas uniéndolos entre sí:

("This is the first line of my text, " "which will be joined to a second.")

O con continuaciones finales de línea, que es un poco más frágil, ya que esto funciona:

"This is the first line of my text, " / "which will be joined to a second."

Pero esto no:

"This is the first line of my text, " / "which will be joined to a second."

¿Ver la diferencia? ¿No? Bueno, no lo harás cuando sea tu código tampoco.

La desventaja de la unión implícita es que solo funciona con cadenas literales, no con cadenas tomadas de variables, por lo que las cosas pueden ponerse un poco más peludas cuando se refactoriza. Además, solo puede interpolar el formato en la cadena combinada como un todo.

Alternativamente, puede unirse explícitamente usando el operador de concatenación ( + ):

("This is the first line of my text, " + "which will be joined to a second.")

Explicit es mejor que implícito, como dice el zen de python, pero crea tres cadenas en lugar de una, y usa el doble de memoria: hay dos que has escrito, más una que son las dos juntas, así que tiene que saber cuándo ignorar el zen. Lo bueno es que puede aplicar formato a cualquiera de las subcadenas por separado en cada línea, o al lote completo desde fuera de los paréntesis.

Finalmente, puede usar cadenas de comillas triples:

"""This is the first line of my text which will be joined to a second."""

Este es a menudo mi favorito, aunque su comportamiento es ligeramente diferente ya que la línea nueva y cualquier espacio en blanco inicial en las líneas subsiguientes se mostrarán en la cadena final. Puede eliminar la línea nueva con una barra invertida de escape.

"""This is the first line of my text / which will be joined to a second."""

Esto tiene el mismo problema que la técnica anterior, ya que el código correcto solo difiere del código incorrecto por espacios en blanco invisibles.

Cuál es el "mejor" depende de su situación particular, pero la respuesta no es simplemente estética, sino una de conductas sutilmente diferentes.


Personalmente, me desagrada colgar bloques abiertos, así que lo formatearía como:

logger.info( ''Skipping {0} because its thumbnail was already in our system as {1}.'' .format(line[indexes[''url'']], video.title) )

En general, no me molestaría en esforzarme demasiado para que el código encaje exactamente dentro de una línea de 80 columnas. Vale la pena mantener la longitud de la línea a niveles razonables, pero el límite de los 80 es cosa del pasado.


Puede usar el módulo de envoltura de texto para dividirlo en varias líneas

import textwrap str="ABCDEFGHIJKLIMNO" print("/n".join(textwrap.wrap(str,8)))

ABCDEFGH
IJKLIMNO

Documentación para ello aquí https://docs.python.org/2/library/textwrap.html
textwrap.fill (texto [, ancho [, ...]])
Ajusta el párrafo único en el texto y devuelve una sola cadena que contiene el párrafo envuelto. fill () es una forma abreviada de

"/ n" .join (wrap (text, ...)) wrap o fill se pueden usar