Antworten:
Sie werden zum Formatieren von Zeichenfolgen verwendet. %s
fungiert als Platzhalter für eine Zeichenfolge, während er %d
als Platzhalter für eine Zahl fungiert. Die zugehörigen Werte werden mit dem %
Operator über ein Tupel übergeben .
name = 'marcog'
number = 42
print '%s %d' % (name, number)
wird gedruckt marcog 42
. Beachten Sie, dass der Name eine Zeichenfolge (% s) und die Zahl eine Ganzzahl ist (% d für Dezimalzahl).
Weitere Informationen finden Sie unter https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting .
In Python 3 wäre das Beispiel:
print('%s %d' % (name, number))
von Python 3 doc
%d
steht für Dezimalzahl
%s
ist für generische Zeichenfolge oder Objekt und wird im Falle eines Objekts in Zeichenfolge konvertiert
Betrachten Sie den folgenden Code
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
die Ausgabe wird sein
giacomo 4.3 4 4.300000 4.3
Wie Sie sehen können, %d
wird auf Ganzzahl abgeschnitten, %s
die Formatierung beibehalten, %f
als float und gedruckt%g
für generische Zahlen verwendet
offensichtlich
print('%d' % (name))
generiert eine Ausnahme; Sie können keine Zeichenfolge in eine Zahl konvertieren
%s
stattdessen eine Zahl verwendet wird.
%s
wird als Platzhalter für Zeichenfolgenwerte verwendet, die Sie in eine formatierte Zeichenfolge einfügen möchten.
%d
wird als Platzhalter für numerische oder dezimale Werte verwendet.
Zum Beispiel (für Python 3)
print ('%s is %d years old' % ('Joe', 42))
Würde ausgeben
Joe is 42 years old
Dies sind Platzhalter:
Beispielsweise: 'Hi %s I have %d donuts' %('Alice', 42)
Diese Codezeile ersetzt% s durch Alice (str) und% d durch 42.
Ausgabe: 'Hi Alice I have 42 donuts'
Dies könnte die meiste Zeit mit einem "+" erreicht werden. Um Ihre Frage besser zu verstehen, sollten Sie auch {} / .format () überprüfen. Hier ist ein Beispiel: Python-String-Formatierung:% vs. .format
Sehen Sie hier auch ein Google Python-Tutorial-Video @ 40 ', das einige Erklärungen enthält: https://www.youtube.com/watch?v=tKTZoB2Vjuk
Die Befehle %d
und %s
Zeichenfolgenformatierung "Befehle" werden zum Formatieren von Zeichenfolgen verwendet. Das %d
ist für Zahlen und %s
ist für Zeichenfolgen.
Zum Beispiel:
print("%s" % "hi")
und
print("%d" % 34.6)
So übergeben Sie mehrere Argumente:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
wird zurückkehren hi there user123456
Dies sind alles informative Antworten, aber keine bringt den Unterschied zwischen %s
und auf den Punkt %d
.
%s
str()
Weist den Formatierer an, die Funktion für das Argument aufzurufen, und da wir per Definition zu einem String zwingen, %s
wird im Wesentlichen nur ausgeführt str(arg)
.
%d
Auf der anderen Seite wird int()
das Argument vor dem Aufruf aufgerufen str()
, wie z. B. str(int(arg))
Dies wird sowohl int
Zwang als auch str
Zwang verursachen.
Zum Beispiel kann ich einen Hex-Wert in eine Dezimalzahl konvertieren.
>>> '%d' % 0x15
'21'
oder einen Schwimmer abschneiden.
>>> '%d' % 34.5
'34'
Die Operation löst jedoch eine Ausnahme aus, wenn das Argument keine Zahl ist.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Wenn also nur angerufen werden soll str(arg)
, dann%s
ist dies ausreichend. Wenn Sie jedoch zusätzliche Formatierungen (wie das Formatieren von Gleitkomma-Dezimalstellen) oder anderen Zwang benötigen, werden die anderen Formatsymbole benötigt.
Mit der f-string
Notation ist die Standardeinstellung, wenn Sie den Formatierer weglassen str
.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
Das gleiche gilt für string.format
; Der Standardwert ist str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
und %s
sind Platzhalter, sie arbeiten als austauschbare Variable. Zum Beispiel, wenn Sie 2 Variablen erstellen
variable_one = "Stackoverflow"
variable_two = 45
Sie können diese Variablen einem Satz in einer Zeichenfolge mithilfe eines Tupels der Variablen zuweisen.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Beachten Sie, dass dies %s
für String und funktioniert%d
für numerische oder dezimale Variablen funktioniert.
Wenn Sie drucken variable_3
, würde es so aussehen
print(variable_3 % (variable_one, variable_two))
Ich habe in StackOverflow nach einer Antwort gesucht und mehr als 45 Antworten auf meine Frage gefunden.
Sie sind Formatspezifizierer. Sie werden verwendet, wenn Sie den Wert Ihrer Python-Ausdrücke in Zeichenfolgen einfügen möchten, wobei ein bestimmtes Format erzwungen wird.
Eine relativ detaillierte Einführung finden Sie unter Eintauchen in Python .
Nach den neuesten Standards sollte dies so erfolgen.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Überprüfen Sie die Python3.6-Dokumente und das Beispielprogramm
Wenn Sie% s oder% d vermeiden möchten, dann ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Ausgabe:
my name is marcog and my name is 42
%s
und %d
.
print
ist der angezeigte Code in Python 3.5.1 ungültig: ist eine Funktion in Python 3, keine Anweisung.
% s wird verwendet, um Platz für Zeichenfolge zu halten.% d wird verwendet, um Platz für Zahlen zu halten
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
In diesem Video geht es um diesen Tipp https://www.youtube.com/watch?v=4zN5YsuiqMA
Apropos ... Python3.6 wird mitgeliefert, f-strings
was die Formatierung erheblich vereinfacht!
Wenn Ihre Python-Version größer als 3.6 ist, können Sie Ihre Zeichenfolgen mit den folgenden Methoden formatieren:
name = "python"
print ("i code with %s" %name) # with help of older method
print ("i code with {0}".format(name)) # with help of format
print (f"i code with {name}") # with help of f-strings
%s
bei Suchmaschinenkonfigurationen verwendet wird. Chrome%s
ersetzt in der Adressleiste eingegebene Keywords. Python verwendet%s
auf ähnliche Weise. Inprint('description: %s' % descrip)
dem%s
Bediener wird durch die Textzeichenfolge in der gespeicherten ersetzt werdendescrip
variabel. Die runden Klammern verhindern eine Fehlermeldung in Python 3.