2011-08-16 19 views
6

Devo scrivere stringhe con newline e una struttura specifica per i file in Python. Quando faccioScrittura di una stringa (con nuove righe) in Python

stringtowrite = "abcd || 
        efgh|| 
        iklk" 

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

sto ottenendo questo errore: SyntaxError: EOL durante la scansione stringa letterale

Come posso scrivere la stringa come è quello di un file senza cancellare le nuove linee?

Grazie per il vostro aiuto.

risposta

8

hai provato a modificare la stringa seguente modo:.

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

La cosa più semplice è quello di utilizzare le virgolette triple di Python (notare le tre virgolette singole)

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

qualsiasi stringa letterale con virgolette triple continuerà su una riga seguente. È possibile utilizzare ''' o ''"

A proposito, se avete

a = abcd 
b = efgh 
c = iklk 

mi sento di raccomandare il seguente:.

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

come un modo più leggibile e divinatorio di facendo

+2

Nota che otterrai anche gli spazi bianchi iniziali utilizzando questo. – SteveMc

+1

Altrimenti dovresti fare tutto in una riga: ''abcd || \ nefgh || \ niklk'' –

+0

Sì. Prevedo un ulteriore debugging del formato dei dati per l'autore una volta che questo funziona. :) –

3

È possibile scrivere a capo - \n - nel tuo stringa.

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

In realtà, il metodo da cui ottengo un array di stringhe sputa le stringhe con newline. Come sostituisco ogni nuova riga nella serie di stringhe con '\'? – Sapphire

+0

Se ci sono già nuove righe, non è necessario aggiungerle, ma non conosco la configurazione. – miku

5

è possibile aggiungere il carattere \ alla fine di ogni riga, che indica che la linea continua nella riga successiva, è possibile tripla citazione la stringa invece di single-citazione, o è possibile sostituire le nuove righe letterali nella stringa con \n.

Problemi correlati