2012-03-06 5 views
35

Jaki jest najlepszy sposób na posiadanie dokumentu tutaj, bez znaków nowej linii u góry iu dołu? Na przykład:Python tutaj dokument bez znaków nowej linii u góry i dołu

print ''' 
dog 
cat 
''' 

będzie miało nowe linie na górze i na dole, a do ich pozbyć muszę to zrobić:

print '''dog 
cat''' 

co uważam za znacznie mniej czytelny.

+0

'print '' '\ dog cat \' ''' tak samo jak kontynuacja linii –

Odpowiedz

51

Jak na ten temat?

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

Albo tak długo, jak nie ma wcięcia w pierwszym wierszu lub końcowe miejsca na ostatni:

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

Albo nawet, jeśli nie przeszkadza nieco więcej bałaganu przed i po sznurka w zamian za możliwość ładnie wciąć go:

from textwrap import dedent 

... 

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

Myślę, że twoje pierwsze podejście jest najbardziej eleganckie, ponieważ wpływasz tylko na pierwszą i ostatnią spację. Używałem paska przed wywołaniem funkcji. – Juan

3

Można użyć strip():

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

Czy rzeczywiście trzeba składnię wielu linii? Dlaczego po prostu nie powiesiłeś nowej linii?

Uważam, że print "pies \ ncat" jest znacznie bardziej czytelny niż jeden z nich.

+9

Przebieg zmienia się. Zadaje heredoc, więc dajmy mu to :) – 0xC0000022L

+4

dość, że chce wydrukować więcej niż kota. Wiem, że właśnie dlatego jestem tutaj – kdubs

17

stosowanie nawiasów:

print (
'''dog 
cat''' 
) 

Stosować str.strip()

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

użycie str.join()

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

Parens Myślę, że to jest droga. Jest czytelny, bardziej zwięzły niż metoda strip, bardziej czytelny niż \ n dla długich bloków i wydaje się być zgodny z oficjalnymi standardami kodowania. –

+1

+1 dla nawiasów. – dawg

20

Dodaj backslash \ na końcu niechcianych linii:

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

Jest to nieco bardziej czytelne.

+0

Odwrotny ukośnik na końcu linii 'pies' sprawia, że ​​znika. Ponieważ nie jest to surowy ciąg, '\ [nowa linia]' jest zredukowana do niczego – user2622016

+0

To kończy się wyglądać strasznie zabawnie, gdy przypisanie zmiennej jest wcięte głębiej niż poziom modułu (np. Metoda klasy). – bukzor

+0

Dziękuję, dokładnie to, czego szukałem. Używam tutaj dokumentów w Ruby i Bash (które nie dodają znaku nowej linii przed pierwszą linią) i wydaje się nieeleganckie usunięcie go za pomocą [1:] lub strip(). –