2011-12-20 13 views
25

ho una davvero lunga serie in python:Come dichiarare una lunga stringa in Python?

long_string = ' 
this is a really 
really 
really 
long 
string 
' 

Tuttavia, dal momento che la stringa si estende su più linee, pitone non riconosce questo come una stringa. Come posso risolvere questo?

+1

Inseritelo in "" "" ... "" "'. '" "" long-long-string "" "' – khachik

+0

Le virgolette triple non sono riservate per le stringhe doc? – ffledgling

+2

@ffledgling è riservato per stringhe multiline, che vengono utilizzate per le stringhe doc – Winand

risposta

32
long_string = ''' 
this is a really 
really 
really 
long 
string 
''' 

""" fa la stessa cosa.

+3

Nei casi in cui il rientro delle righe della stringa rende il codice più leggibile, è possibile utilizzare 'dedent' per rimuovere il rientro nella stringa risultante. – IanS

20

È possibile utilizzare uno

long_string = 'fooo' \ 
'this is really long' \ 
'string' 

o se avete bisogno linebreaks

long_string_that_has_linebreaks = '''foo 
this is really long 
''' 
+4

Inoltre, per la prima opzione se si dispone di parentesi attorno alla stringa non è necessario il backslash. Tuttavia notate il grande inconveniente nell'usare la concatenazione di stringhe: a meno che non si sia veramente cauti sugli spazi si potrebbe finire con "il fooothis è davvero longstring", che probabilmente non era quello che volevi. – Duncan

66

Si può anche fare questo, che è bello perché si ha un migliore controllo gli spazi all'interno della stringa:

long_string = (
    'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' 
    'sed do eiusmod tempor incididunt ut labore et dolore magna ' 
    'aliqua. Ut enim ad minim veniam, quis nostrud exercitation ' 
    'ullamco laboris nisi ut aliquip ex ea commodo consequat. ' 
    'Duis aute irure dolor in reprehenderit in voluptate velit ' 
    'esse cillum dolore eu fugiat nulla pariatur. Excepteur sint ' 
    'occaecat cupidatat non proident, sunt in culpa qui officia ' 
    'deserunt mollit anim id est laborum.' 
) 
+2

In effetti, questa è una delle cose che ho incontrato quando volevo creare una tupla con un elemento;) – plaes

+0

Questo sembra non funzionare nel momento in cui hai bisogno di un valore valutato che non sia una stringa. Tipicamente per me, quando utilizzo la list comprehension per implodere dati complessi in una stringa; e non ho trovato un modo per combinare una tale espressione con questo stile di definizione delle stringhe. :( – ThorSummoner

+0

Puoi anche usare long_string = textwrap.dedent ('' 'lunga stringa con ogni riga rientrata' '') https://docs.python.org/3/library/textwrap.html#textwrap.dedent – moorecm

4

Sono stato anche in grado di farlo funzionare in questo modo.

long_string = '\ 
this is a really \ 
really \ 
really \ 
long \ 
string\ 
' 

Non riesco a trovare alcun riferimento online a questo modo di costruire una stringa multi-linea. Non so se è corretto. Il mio sospetto è che Python ignori la newline a causa del backslash? Forse qualcuno può far luce su questo.

+1

Inoltre, Sublime Text (Build 3114) sembra avere problemi con la sintassi che evidenzia questo. –

Problemi correlati