¿Cómo especifico nuevas líneas en una cadena para escribir varias líneas en un archivo?

5 minutos de lectura

avatar de usuario
FabiánCocinero

¿Cómo puedo indicar una nueva línea en una cadena en Python, para poder escribir varias líneas en un archivo de texto?

  • Te das cuenta de que Python print funciona como System.out.println en Java, y agrega automáticamente una nueva línea después del texto, ¿verdad?

    – Greg Hewgill

    16 de julio de 2012 a las 2:46


  • los print La declaración en Python también se puede usar para escribir en archivos (los detalles difieren entre Python 2.x y Python 3.x, así que consulte los documentos de referencia para su versión). print en Python 2.xprint en Python 3.x

    – Greg Hewgill

    16 de julio de 2012 a las 2:55


avatar de usuario
charlie martin

Depende de cuán correcto quieras ser. \n generalmente hará el trabajo. Si realmente quiere hacerlo bien, busque el carácter de nueva línea en el os paquete. (En realidad se llama linesep.)

Nota: al escribir en archivos usando la API de Python, no use el os.linesep. Solo usa \n; Python lo traduce automáticamente al carácter de nueva línea adecuado para su plataforma.

  • Desde el enlace que proporcionó “No use os.linesep como un terminador de línea cuando escriba archivos abiertos en modo de texto (el valor predeterminado); use un solo ‘\ n’ en su lugar, en todas las plataformas”. Entonces, ¿qué quiere decir con “correcto” y cuáles son las razones de su comentario y el suyo?

    – Yasen

    22 de noviembre de 2014 a las 18:41

  • @Yasen: en Windows, la secuencia de nueva línea es "\r\n". Esto significa que os.linesep estarán "\r\n". Cuando está escribiendo en un archivo en modo de texto, hace una traducción de nueva línea a medida que escribe; es decir, cada "\n" en la salida se traducirá a "\r\n" en el archivo resultante. Puede ver cómo esto es un problema si el texto que está escribiendo ya contiene "\r\n" secuencias: el resultado será "\r\r\n" al final de cada línea. Supongo, al menos: en realidad no lo he probado.

    – Nate CK

    6 de enero de 2015 a las 4:40


  • Para un salto de línea que es específico del formato en lugar de específico del sistema operativo, por ejemplo, un RFC 4180El archivo CSV compatible usa \r\n, ¿cómo se haría eso si \n pudiera escribirse como \r\n, lo que daría como resultado \r\r\n en el archivo?

    –Andrew Morton

    24 de agosto a las 18:13

avatar de usuario
python_powered

El carácter de nueva línea es \n. Se utiliza dentro de una cadena.

Ejemplo:

    print('First line \n Second line') 

dónde \n es el carácter de nueva línea.

Esto daría el resultado:

First line
 Second line

Si usa Python 2, no usa los paréntesis en la función de impresión.

avatar de usuario
Hom Bahrani

Puede escribir en las nuevas líneas por separado o dentro de una sola cadena, que es más fácil.

Ejemplo 1

Aporte

line1 = "hello how are you"
line2 = "I am testing the new line escape sequence"
line3 = "this seems to work"

Puedes escribir el ‘\n’ por separado:

file.write(line1)
file.write("\n")
file.write(line2)
file.write("\n")
file.write(line3)
file.write("\n")

Producción

hello how are you
I am testing the new line escape sequence
this seems to work

Ejemplo 2

Aporte

Como otros han señalado en las respuestas anteriores, coloque \n en los puntos relevantes de su cadena:

line = "hello how are you\nI am testing the new line escape sequence\nthis seems to work"

file.write(line)

Producción

hello how are you
I am testing the new line escape sequence
this seems to work

avatar de usuario
Bandham Manikanta

Separador de línea independiente de la plataforma: Linux, Windows e iOS

import os
keyword = 'physical'+ os.linesep + 'distancing'
print(keyword)

Producción:

physical
distancing

avatar de usuario
fredcallaway

Aquí hay una solución más legible que funcionará correctamente incluso si no está en la sangría de nivel superior (por ejemplo, en una definición de función).

import textwrap
file.write(textwrap.dedent("""
    Life's but a walking shadow, a poor player
    That struts and frets his hour upon the stage
    And then is heard no more: it is a tale
    Told by an idiot, full of sound and fury,
    Signifying nothing.
"""))

La solución más simple

Si solo llamas print sin ningún argumento, generará una línea en blanco.

print

Puede canalizar la salida a un archivo como este (considerando su ejemplo):

f = open('out.txt', 'w')
print 'First line' >> f
print >> f
print 'Second line' >> f
f.close()

No solo es independiente del sistema operativo (sin siquiera tener que usar el os paquete), también es más legible que poner \n dentro de cadenas.

Explicación

los print() tiene un argumento de palabra clave opcional para el final de la cadena, llamado endque por defecto es el carácter de nueva línea del sistema operativo, por ejemplo. \n. Entonces, cuando estás llamando print('hello')Python en realidad está imprimiendo 'hello' + '\n'. Lo que significa que cuando estás llamando solo print sin ningún argumento, en realidad está imprimiendo '' + '\n'lo que da como resultado una nueva línea.

Alternativa

Utilice cadenas de varias líneas.

s = """First line
    Second line
    Third line"""
f = open('out.txt', 'w')
print s >> f
f.close()

avatar de usuario
mhawke

En Python, solo puede usar el carácter de nueva línea, es decir \n

¿Ha sido útil esta solución?