2015-02-23 14 views

Antwort

30

Verwenden Sie nicht print ...,, wenn Sie keine Leerzeichen möchten. Verwenden Sie String-Verkettung oder Formatierung.

Verkettungs:

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

Formatierung:

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

Letzteres ist wesentlich flexibler, sehen die str.format() method documentation und die Formatting String Syntax section.

Sie kommen auch über die ältere % formatting style:

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

aber das ist nicht so flexibel wie die neuere str.format() Methode.

+1

Oh okay, ich nicht, dass wusste, nur Python zu lernen, dank für die schnelle Antwort! – nookonee

+0

''' .format 'Stil ist vorzuziehen, weil es mehrere'% '-Style bedingten Kanten Fällen wie impliziten Aufstieg zu' Unicode 'und unbeabsichtigte'% Tupel ','% dict 'Nutzung vermeidet. – jfs

+0

@ J.F.Sebastian: Nicht zu erwähnen, dass 'str.format()' benutzerdefinierte Formatierung für Klassen unterstützt; Sie können 'datetime' Objekte nicht so einfach mit'% 'formatieren, wie Sie es zum Beispiel mit' str.format() 'können. Dann gibt es die rekursiven Felddefinitionen (Sie können Felder verwenden, um zu bestimmen, wie andere Felder formatiert werden), usw. –

2

Es ist das Komma, das diesen zusätzlichen Leerraum bietet.

Eine Möglichkeit ist die Zeichenfolge % Methode zu verwenden:

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

die wie printf in C ist, so dass Sie den Formatbezeich in der Zeichenfolge die Einzelteile nach % durch die Verwendung selbst zu übernehmen und zu formatieren. Ein weiteres Beispiel, zeigt die Verwendung mehrerer Werte:

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

Für das, was es wert ist, Python 3 stark verbessert die Situation, indem Sie den Separator und Terminator für einen einzelnen print Anruf angeben:

>>> 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

Die '%' Interpolation ist anfällig für Fehler mit 'Tupel's und anderem eigenartigen Verhalten. –

+0

Und dennoch, irgendwie habe ich es geschafft, den Code zusammen zu basteln und es zum ersten Mal funktionieren zu lassen. Ja, Sie müssen über die Unzulänglichkeiten der von Ihnen verwendeten Werkzeuge Bescheid wissen. Das ist in jedem Feld der Fall. Ich bin nicht der Typ von Entwickler, der dazu neigt, willkürliche Typen an meine Formatierungsoperationen zu übergeben :-) – paxdiablo

+0

Deshalb ist das '.format', das ohne Randfälle auf 99.999% der Python-Installationen eines neuen Benutzers funktioniert, nicht vorhanden je mehr Anfänger freundlich soution- –

-1
>>> value=42 

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

Value is "42" 
+0

Keine Notwendigkeit, die zusätzliche Verkettung zu haben, nur um die '' 'Zeichen zu erhalten –

+0

Benutzer' repr' oder, in diesem Fall '% r' –

1

Um aufzubauen, was Martjin sagte. Ich würde String-Interpolation/Formatierung verwenden.

In Python 2.x, das, was Sie verwenden aufgrund der fehlenden Klammern um die Druckfunktion zu sein scheint, was Sie tun:

print 'Value is "%d"' % value 

In Python 3.x würden Sie das Format-Methode verwenden, Stattdessen würden Sie Code so aussehen.

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

nur eine einfache Antwort für die Zukunft, die ich als Starter leicht zu bedienen gefunden: ähnliche end='' zur Verwendung eine neue Linie zu vermeiden, können Sie sep='' verwenden, um die weißen Flächen ... für diese Frage zu vermeiden hier würde es so aussehen: print('Value is "', value, '"', sep = '')

Kann es jemanden in der Zukunft helfen.

+0

Danke! Das hat mir mit einem Problem geholfen, das mich schon seit Ewigkeiten nervt – Puffycheeses

+0

Das ist Python 3 spezifische Syntax. –

1

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

print (* Objekte, sep =‘‘, end = '\ n', file = sys.stdout)

Hinweis: Diese Funktion ist normalerweise nicht verfügbar als Einbau in seit Der Name print wird als Druckanweisung erkannt. Um die Erklärung zu deaktivieren und die Funktion print() verwendet, benutzen Sie diese Zukunft Anweisung am Anfang des Moduls:

von Zukunft Import print_function

Verwandte Themen