Ruby Beispiel:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Die erfolgreiche Verkettung von Python-Strings scheint mir ausführlich zu sein.
Ruby Beispiel:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Die erfolgreiche Verkettung von Python-Strings scheint mir ausführlich zu sein.
name
es sich um eine lokale Variable handelt, die in der Zeichenfolge liegt. In Python müssen Sie das Wörterbuch der lokalen Variablen explizit an den Zeichenfolgenformatierer übergeben, wenn Sie diese verwenden möchten.Antworten:
Python 3.6 fügt eine Literal-String-Interpolation hinzu , die der Ruby-String-Interpolation ähnelt. Ab dieser Version von Python (die voraussichtlich Ende 2016 veröffentlicht wird) können Sie Ausdrücke in "f-Strings" einfügen, z
Vor 3.6 können Sie dem am nächsten kommen
Der
%
Operator kann für die Zeichenfolgeninterpolation in Python verwendet werden. Der erste Operand ist die zu interpolierende Zeichenfolge, der zweite kann verschiedene Typen haben, einschließlich einer "Zuordnung", wobei Feldnamen den zu interpolierenden Werten zugeordnet werden. Hier habe ich das Wörterbuch der lokalen Variablen verwendetlocals()
, um den Feldnamenname
seinem Wert als lokale Variable zuzuordnen .Der gleiche Code, der die
.format()
Methode der letzten Python-Versionen verwendet, würde folgendermaßen aussehen:Es gibt auch die
string.Template
Klasse:quelle
%s
für eine Zeichenfolge und%03d
für eine auf 3 Ziffern aufgefüllte Zahl mit führenden Nullen. Es könnte einfach geschrieben werdenprint "%s has %03d" % ("Python", 2)
. In diesem Beispiel wird dann ein Zuordnungsschlüssel in Klammern gesetzt%
, um den Platzhaltern aussagekräftige Namen zu geben, anstatt sich auf ihre Reihenfolge in der Zeichenfolge zu verlassen. Anschließend übergeben Sie ein Wörterbuch, das die Schlüsselnamen ihren Werten zuordnet. Aus diesem Grund verwendet Sven dielocals()
Funktion, die ein Diktat zurückgibt, das alle Ihre lokalen Variablen enthält, damit esname
dem Wert von name zugeordnet wirds
als Konvertierungstyp verwenden können - Python kann fast alles in einen String konvertieren. Aber natürlich würden Sie die speziellen Formatierungsfunktionen anderer Konvertierungstypen verlieren.Seit Python 2.6.X möchten Sie möglicherweise Folgendes verwenden:
quelle
%
Operator für die Zeichenfolgeninterpolation in Python 3.x nicht veraltet ist. docs.python.org/dev/py3k/whatsnew/… kündigt den Plan an,%
ab 3.1 zu verwerfen , aber dies ist nie geschehen.{}
kann ich eliminieren.Ich habe das Interpy- Paket entwickelt, das die String-Interpolation in Python ermöglicht .
Installieren Sie es einfach über
pip install interpy
. Fügen Sie dann die Zeile# coding: interpy
am Anfang Ihrer Dateien hinzu!Beispiel:
quelle
Die String-Interpolation von Python ähnelt der von printf ()
Wenn du es versuchst:
Das Tag
%s
wird durch diename
Variable ersetzt. Sie sollten sich die Druckfunktions-Tags ansehen: http://docs.python.org/library/functions.htmlquelle
print "First is %s, second is %s" % (var1, var2)
.Die String-Interpolation wird in Python 3.6 enthalten sein, wie in PEP 498 angegeben . Sie können dies tun:
Beachten Sie, dass ich SpongeBob hasse, daher war das Schreiben etwas schmerzhaft. :) :)
quelle
Sie können dies auch haben
http://docs.python.org/2/library/string.html#formatstrings
quelle
#
zu drucken. Sie verwenden nur die Ruby-Syntax.#
Zeichen gedruckt werden würde.Verwendungszweck:
PS: Leistung kann ein Problem sein. Dies ist nützlich für lokale Skripte, nicht für Produktionsprotokolle.
Dupliziert:
Python-String-Formatierung:% vs. .format
Was ist das Python-Äquivalent zum Einbetten eines Ausdrucks in eine Zeichenfolge? (dh "# {expr}" in Ruby)
Was ist Ruby-Äquivalent zu Pythons `s =" Hallo,% s. Wo ist% s? " % ("John", "Mary") `
Gibt es ein Python, das Rubys String-Interpolation entspricht?
quelle
Für altes Python (getestet auf 2.4) weist die Top-Lösung den Weg. Du kannst das:
Und du verstehst
quelle
Python 3.6 und höher verfügen über eine Literal-String-Interpolation mit F-Strings:
quelle