2017-04-30 3 views
1

Also, was ist los mit dieser Zeichenfolge? Ich bin nicht in der Lage herauszufinden, warum es sagt, dass es nicht genug Argumente für Formatzeichenfolge gibt. Ich bin neu bei Python und habe mir nur Gedanken gemacht.Python-String-Formatierung - Type Error - Nicht genug Argumente für Formatzeichenfolge

Edit: Dies ist nicht das gleiche wie die andere Frage vorgeschlagen. Der andere versucht etwas verrücktes Array-Zeug zu machen, in das ich gar nicht hineinkomme. Ich muss nur das grundlegende Konzept von Tupeln verstehen und wie die Formatierung von Strings funktioniert.

data = ["John", 23, "United States", "United Kingdom"] 
    format_string = "Your name is %s and you are %s years old. You were born in %s and are now living in %s." 
    print(format_string %data) 

Ist es, weil ich "strings" innen nicht enought haben? Wie habe ich eine einzige Liste mit Strings und Zahlen? Zum Beispiel eine JSON-Liste.

+0

Dies liegt daran, dass Sie nur die Liste übergeben, die die Objekte enthält, die Sie formatieren möchten. So wird nur ein Objekt formatiert, die Liste selbst. – direprobs

+0

Mögliches Duplikat von [Verwendung von Liste (oder Tupel) als String-Formatierungswert] (http://stackoverflow.com/questions/5299796/how-to-use-list-or-uple-as-string-formatting-value) –

Antwort

1

Wenn Sie die Liste als Tupel übergeben, sollte es gut funktionieren.

data = ["John", 23, "United States", "United Kingdom"] 
format_string = "Your name is %s and you are %s years old. You were born in %s and are now living in %s." 
print(format_string % tuple(data)) 
+0

In Betracht ziehen, diesen [Beitrag] auszuprobieren (http://stackoverflow.com/questions/5299796/how-to-use-list-or-tuple-as-string-formatting-value). –

+0

Überlegen Sie, diese Frage als Duplikat zu kennzeichnen, da der Link im Grunde dasselbe verlangt – abccd

+0

@DigitalVeer - Also, was besteht aus einem Tupel. Deine Antwort hat für mich funktioniert. Aber ich bin ein Anfänger und muss meinen Kopf darum wickeln, was ein "Tupel" ist, also halte ich es offen. Eine Definition kommt mir nicht entgegen. So weit ich das verstehe. Ich kann Datensätze und Strings mischen und es scheint gut zu funktionieren. Ich muss% d nicht verwenden, obwohl 23 eine Zahl ist. Warum? Was unterscheidet ein Tupel von einer regulären Liste? – CoderX

1

Der rechte Operand str.__mod__ muss entweder ein Tupel oder ein einziger Wert sein. Da es kein Tupel ist, wird es als ein einzelner Wert interpretiert, während die Formatzeichenfolge ein 4-Tupel benötigt. Entweder konvertieren Sie data in ein Tupel oder machen Sie es zu einem Tupel an erster Stelle.

Verwandte Themen