Antworten:
Sie werden zum Formatieren von Zeichenfolgen verwendet. %sfungiert als Platzhalter für eine Zeichenfolge, während er %dals 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, %dwird auf Ganzzahl abgeschnitten, %sdie Formatierung beibehalten, %fals 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
%sstattdessen 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 %dund %sZeichenfolgenformatierung "Befehle" werden zum Formatieren von Zeichenfolgen verwendet. Das %dist für Zahlen und %sist 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 %sund auf den Punkt %d.
%sstr()Weist den Formatierer an, die Funktion für das Argument aufzurufen, und da wir per Definition zu einem String zwingen, %swird im Wesentlichen nur ausgeführt str(arg).
%dAuf der anderen Seite wird int()das Argument vor dem Aufruf aufgerufen str(), wie z. B. str(int(arg))Dies wird sowohl intZwang als auch strZwang 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-stringNotation 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'
%dund %ssind 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 %sfü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
%sund %d.
printist 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-stringswas 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
%sbei Suchmaschinenkonfigurationen verwendet wird. Chrome%sersetzt in der Adressleiste eingegebene Keywords. Python verwendet%sauf ähnliche Weise. Inprint('description: %s' % descrip)dem%sBediener wird durch die Textzeichenfolge in der gespeicherten ersetzt werdendescripvariabel. Die runden Klammern verhindern eine Fehlermeldung in Python 3.