2011-08-16 15 views
6

Tengo que escribir cadenas con nuevas líneas y una estructura específica para los archivos en Python. Cuando hagoEscribir una cadena (con nuevas líneas) en Python

stringtowrite = "abcd || 
        efgh|| 
        iklk" 

f = open(save_dir + "/" +count+"_report.txt", "w") 
f.write(stringtowrite) 
f.close() 

estoy recibiendo este error: SyntaxError: EOL durante la exploración de cadena literal

¿Cómo puedo escribir la cadena, ya que es un archivo sin borrar las nuevas líneas?

Gracias por su ayuda.

Respuesta

8

Ha intentado modificar la cadena de la siguiente manera:.

stringtowrite = "abcd ||\nefgh||\niklk" 

f = open(save_dir + os.path.sep +count+"_report.txt", "w") 
f.write(stringtowrite) 
f.close() 

O:

stringtowrite = """abcd || 
        efgh|| 
        iklk""" 
9

Lo más sencillo es utilizar comillas triples de pitón (tenga en cuenta los tres comillas simples)

stringtowrite = '''abcd || 
        efgh|| 
        iklk''' 

cualquier cadena literal con comillas triples continuará en una línea siguiente. Se puede utilizar ''' o ''"

Por cierto, si usted tiene

a = abcd 
b = efgh 
c = iklk 

recomendaría lo siguiente:.

stringtowrite = "%s||\n%s||\n%s" % (a,b,c) 

como una forma más legible y Pythonic de haciéndolo

+2

Tenga en cuenta que también obtendrá el espacio en blanco inicial usando esto. – SteveMc

+1

De lo contrario, tendrías que hacerlo todo en una sola línea: ''abcd || \ nefgh || \ niklk'' –

+0

Sí. Anticipo un poco más de depuración de formato de datos para el autor una vez que esto funcione. :) –

3

Puede escribir nuevas líneas - - \n en su cadena.

stringtowrite = "abcd ||\nefgh||\niklk" 
+0

En realidad, el método del que obtengo una serie de cadenas escupe cadenas con nuevas líneas. ¿Cómo reemplazo cada nueva línea en la matriz de cadenas con '\'? – Sapphire

+0

Si ya hay nuevas líneas, no habría necesidad de agregarlas, pero entonces, no conozco su configuración. – miku

5

Usted puede añadir el carácter \ al final de cada línea, lo que indica que la línea se continúa en la línea siguiente, que pueda triple cita de la cadena en lugar de un solo citar, o se puede reemplazar las nuevas líneas literales en la cadena con \n.

Cuestiones relacionadas