2012-03-06 22 views
35

¿Cuál es la mejor manera de tener un documento aquí, sin líneas nuevas en la parte superior e inferior? Por ejemplo:Python aquí documento sin líneas nuevas en la parte superior e inferior

print ''' 
dog 
cat 
''' 

tendrá nuevas líneas en la parte superior e inferior, y para deshacerse de ellos tengo que hacer esto:

print '''dog 
cat''' 

que me parece ser mucho menos legible.

+0

'print '' '\ dog cat \' ''' al igual que haciendo la continuación de línea –

Respuesta

51

¿Qué tal esto?

print ''' 
dog 
cat 
'''[1:-1] 

O, siempre y cuando no hay sangría en la primera línea o espacio por detrás en el pasado:

print ''' 
dog 
cat 
'''.strip() 

O incluso, si no te importa un poco más desorden antes y después de la cadena de a cambio de ser capaz de aplicar una sangría muy bien que:

from textwrap import dedent 

... 

print dedent(''' 
    dog 
    cat 
    rabbit 
    fox 
''').strip() 
+0

Creo que su primer enfoque es el más elegante, ya que solo afecta al primer y último carácter de espacio en blanco. Estaba usando strip antes a través de una llamada a función. – Juan

3

Usted podría utilizar strip():

print ''' 
dog 
cat 
'''.strip() 
1

es lo que realmente necesita la sintaxis de varias líneas? ¿Por qué no acaba de agregar una nueva línea?

La impresión "dog \ ncat" me resulta mucho más legible que cualquiera de los dos.

+9

El kilometraje varía. Está preguntando heredoc, así que démosle eso :) – 0xC0000022L

+4

bastante seguro de que quiere imprimir más que un perro gato. Sé que es por eso que estoy aquí – kdubs

17

paréntesis uso:

print (
'''dog 
cat''' 
) 

Use str.strip()

print ''' 
dog 
cat 
'''.strip() 

uso str.join()

print '\n'.join((
    'dog', 
    'cat', 
    )) 
+1

Parens, creo que es el camino a seguir. Es legible, es más conciso que el método strip, más legible que el \ n para bloques largos, y parece ajustarse a los estándares oficiales de codificación. –

+1

+1 para los paréntesis. – dawg

20

Añadir barra inversa \ al final de las líneas no deseadas:

text = '''\ 
cat 
dog\ 
''' 

Es algo más legible.

+0

La barra invertida al final de la línea 'dog' hace que desaparezca. Como esto no es una cadena en bruto, '\ [nueva línea]' se reduce a nada – user2622016

+0

Termina pareciendo terriblemente gracioso cuando la asignación de la variable tiene una sangría más profunda que el nivel del módulo (por ejemplo, un método de una clase). – bukzor

+0

Gracias, exactamente lo que estaba buscando. Utilizo aquí documentos en Ruby y Bash (que no agregan una nueva línea antes de la primera línea), y parece poco elegante eliminarlo con un [1:] o una tira(). –

Cuestiones relacionadas