2015-12-15 7 views
11

Ho alcune stringhe da concatenare e la stringa risultante sarà piuttosto lunga. Ho anche alcune variabili da concatenare.Concatena le stringhe in python in multiline

Come è possibile combinare stringhe e variabili in modo che il risultato sia una stringa a più righe?

Il seguente codice genera un errore.

str = "This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3" ; 

Ho provato anche questo

str = "This is a line" \ 
     str1 \ 
     "This is line 2" \ 
     str2 \ 
     "This is line 3" ; 

Si prega di suggerire un modo per farlo.

+1

perché hai '$' caratteri di fronte al vostro stringhe ... quelle non sono nomi di variabili python validi. –

+0

Quale pitone usi 2.x o 3? – ipinak

+0

@ipinak python 2.7.6 – user3290349

risposta

17

Ci sono diversi modi. Una soluzione semplice è quella di aggiungere parentesi:

strz = ("This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3") 

Se si desidera che ogni "linea" su una riga separata è possibile aggiungere caratteri di nuova riga:

strz = ("This is a line\n" + 
     str1 + "\n" + 
     "This is line 2\n" + 
     str2 + "\n" + 
     "This is line 3\n") 
1

Vorrei aggiungere tutto ciò che è necessario concatenare a un elenco e quindi unirlo in un'interruzione di riga.

my_str = '\n'.join(['string1', variable1, 'string2', variable2]) 
+1

Questo non risolverà il mio scopo. Perché sto scrivendo un script a cui prenderà un nome variabile e genererà un metodo getter and setter per esso.SO Vorrei scrivere nel formato sae. – user3290349

+1

@ user3290349 risolve la domanda che hai posto e ha spazio per l'espansione. Se vuoi che risolva uno scopo diverso, assicurati che lo scopo sia indicato nella tua domanda. –

+0

@ user3290349 in Python non sono necessari getter e setter. Suggerisco di dare un'occhiata al decoratore di '@ property' di python. https://docs.python.org/2/library/functions.html#property –

5

Python non è PHP e non avete bisogno di mettere $ prima di un nome di variabile.

a_str = """This is a line 
     {str1} 
     This is line 2 
     {str2} 
     This is line 3""".format(str1="blabla", str2="blablabla2") 
+0

Questo includerà lo spazio bianco iniziale su ogni riga, che è diverso da quello che fa il codice corrente. –

+0

Non l'ho preso in considerazione poiché il codice iniziale fornito non ha funzionato. –

+0

Btw ... rimuovere gli spazi bianchi iniziali è come iniziare ogni riga a col 1 –