2015-02-23 15 views

Odpowiedz

30

Nie używaj print ...,, jeśli nie chcesz mieć spacji. Użyj konkatenacji lub formatowania ciągów.

Łączenie:

print 'Value is "' + str(value) + '"' 

formatów:

print 'Value is "{}"'.format(value) 

Ten ostatni jest znacznie bardziej elastyczny, patrz str.format() method documentation i Formatting String Syntax section.

Będziesz także natknąć się starsza % formatting style:

print 'Value is "%d"' % value 
print 'Value is "%d", but math.pi is %.2f' % (value, math.pi) 

ale to nie jest tak elastyczny, jak nowszych str.format() metody.

+1

Oh w porządku Nie wiedziałem, że tylko nauka Pythona, dzięki dla szybkiej odpowiedzi! – nookonee

+0

Preferowany jest styl '' '.format', ponieważ unika kilku przypadków związanych z krawędzią w stylu "%", takich jak niejawna promocja na 'unicode' i niezamierzone użycie'% tuple', '% dict'. – jfs

+0

@ J.F.Sebastian: nie wspominając, że 'str.format()' obsługuje niestandardowe formatowanie dla klas; nie można łatwo sformatować obiektów 'datetime' za pomocą'% 'tak jak na przykład za pomocą' str.format() '. Następnie są rekursywne definicje pól (możesz użyć pól do określenia, jak inne pola są sformatowane), itd. –

2

To przecinek, który zapewnia dodatkową białą przestrzeń.

Jednym ze sposobów jest użycie metody ciąg %:

print 'Value is "%d"' % (value) 

który jakby printf w C, co pozwala na włączenie i formatować elementy po % przy użyciu formatu specyfikatory w samym ciąg. Innym przykładem, pokazując użycie wielu wartości:

print '%s is %3d.%d' % ('pi', 3, 14159) 

Na co warto, Python 3 znacznie poprawia sytuację, pozwalając na określenie separatora i terminator dla pojedynczego print rozmowy:

>>> print(1,2,3,4,5) 
1 2 3 4 5 

>>> print(1,2,3,4,5,end='<<\n') 
1 2 3 4 5<< 

>>> print(1,2,3,4,5,sep=':',end='<<\n') 
1:2:3:4:5<< 
+0

interpolacja '%' jest podatna na błędy z 'krotką' i innymi dziwnymi zachowaniami. –

+0

A jednak, jakoś udało mi się spleść kod i sprawić, by działał po raz pierwszy. Tak, musisz wiedzieć o wadach używanych narzędzi. To prawda w dziedzinie _any_. Nie jestem typem programisty, który zwykle przekazuje dowolne typy operacji formatowania :-) – paxdiablo

+0

dlatego właśnie '.format', który działa bez żadnych krawędzi na 99,999% instalacji Pythona, z którymi może natrafić nowy użytkownik, jest im bardziej przyjazny dla nowicjuszy - –

-1
>>> value=42 

>>> print "Value is %s"%('"'+str(value)+'"') 

Value is "42" 
+0

Nie trzeba mieć dodatkowej konkatenacji, aby uzyskać '' 'znaki –

+0

User' repr' lub, w tym przypadku '% r' –

1

Aby skompensować to, co mówił Martjin. Użyłbym interpolacji/formatowania napisów.

w Pythonie 2.x, która wydaje się być to, czego używasz z powodu braku nawiasów wokół funkcji drukowania zrobić:

print 'Value is "%d"' % value 

w Pythonie 3.x ty chcesz użyć metody formatowania zamiast tego, kod będzie wyglądał tak.

message = 'Value is "{}"' 
print(message.format(value)) 
8

Wystarczy prosty odpowiedź na przyszłość, które znalazłem łatwy w użyciu jako starter: Podobny do korzystania end='' uniknąć nową linię, można użyć sep='' uniknąć spacji na to pytanie ... tutaj będzie wyglądać tak: print('Value is "', value, '"', sep = '')

Może to pomóc komuś w przyszłości.

+0

Dziękuję! To pomogło mi z problemem, który podsłuchiwał mnie przez wieki – Puffycheeses

+0

To jest Python 3 specyficzna składnia. –

1

https://docs.python.org/2/library/functions.html#print

print (* obiekty, wrzesień =”” end = '\ n', file = sys.stdout)

Uwaga: Funkcja ta nie jest zwykle dostępny jako wbudowana od nazwa print jest rozpoznawana jako instrukcja drukowania. Aby wyłączyć oświadczenia i użyć funkcji print(), użyj tego komunikatu w przyszłości w górnej części modułu:

z przyszłego import print_function

Powiązane problemy