2011-12-20 15 views
25

tengo una cadena muy larga en Python:¿Cómo declarar una cadena larga en Python?

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

Sin embargo, ya que la cadena se extiende por varias líneas, pitón no reconoce esto como una cadena. ¿Cómo puedo solucionar esto?

+1

Ponlo en '" "" ... "" "'. '" "" long-long-string "" "' – khachik

+0

¿No se han reservado comillas triples para cadenas de documentos? – ffledgling

+2

@ffledgling está reservado para cadenas de línea múltiple, que se usan para cadenas de texto – Winand

Respuesta

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

""" hace lo mismo.

+3

En los casos en que la sangría de las líneas de la cadena hace que el código sea más legible, puede usar 'dedent' para eliminar la sangría en la cadena resultante. – IanS

20

Puede utilizar cualquiera

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

o si necesita saltos de línea

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

Además, para su primera opción, si tiene un paréntesis alrededor de la cadena, no necesita las barras diagonales inversas. Sin embargo, note el gran inconveniente con el uso de la concatenación de cadenas: a menos que tenga mucho cuidado con los espacios, podría terminar con '" fooothis es realmente longstring "', que probablemente no era lo que usted quería. – Duncan

66

También puede hacer esto, lo cual es bueno porque tiene un mejor control sobre el espacio en blanco dentro de la cadena:

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

De hecho, esta es una de las cosas con las que me encontré cuando quería crear una tupla con un elemento;) – plaes

+0

Esto parece no funcionar en el momento en que necesita un valor evaluado que no sea una cadena. Típicamente para mí, cuando uso la comprensión de listas para implosionar datos complejos en una cadena; y no he encontrado una manera de combinar tal expresión con este estilo de definición de cadena. :( – ThorSummoner

+0

También puede usar long_string = textwrap.dedent ('' 'cadena larga con cada línea sangrada' '') https://docs.python.org/3/library/textwrap.html#textwrap.dedent – moorecm

4

También pude hacerlo funcionar de esta manera.

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

No puedo encontrar ninguna referencia en línea a esta forma de construir una cadena de varias líneas. No sé si es correcto. Mi sospecha es que Python está ignorando la nueva línea debido a la barra invertida. Tal vez alguien pueda arrojar luz sobre esto.

+1

Además, Sublime Text (Build 3114) parece tener problemas con la sintaxis al resaltar esto. –

Cuestiones relacionadas