Ich habe den folgenden Code
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Ich möchte die Ausgabe erhalten:
Print percent % in sentence and not have it break.
Was passiert eigentlich:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
quelle
quelle
\%
? Das war meine Vermutung, ich bin überrascht, dass es%%
stattdessen ist - scheint ziemlich eingängig zu sein.% i
bedeutet "eine Dezimaldarstellung einer Ganzzahl, links mit Leerzeichen aufgefüllt.\%
wäre, wäre es tatsächlich,\\%
wenn es in gewöhnlichem Code geschrieben wäre.<escape><escape>
ist das typische Muster, das ich gesehen habe und das\
zufällig der häufigste Fluchtcharakter ist, egal ob gut oder schlecht.\
wenn du drucken musstest\\%
? Sie müssen durch Wiederholung von Sonderzeichen entkommen, wenn die Sonderzeichen je nach den Umständen auch keine Sonderzeichen sind.Antworten:
quelle
print('%s%%' % 100)
gedruckt100%
. Aberprint('%%')
druckt%%
. Es sieht also so aus, als müssten Sie den% -Zeichen nicht entkommen, wenn Sie keine Substitutionen vornehmen.%
Verfahren tatsächlich veraltet ist (in Python 3) zu Gunstenstr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
Methode in Python 3.6 nicht abgeschrieben wird. Es wird weiterhin anstelle seiner Ähnlichkeit mit c, c ++ usw. unterstützt,str.format()
und F-Strings werden bevorzugt, aber nicht erzwungen.%
Zeichen entkommen müssen . Just%
will doAlternativ können Sie ab Python 2.6 die neue Zeichenfolgenformatierung verwenden (beschrieben in PEP 3101 ):
Das ist besonders praktisch, wenn Ihre Saiten komplizierter werden.
quelle
format
heutzutage die Verwendung.Versuchen Sie
%%
,% sign zu drucken.quelle
Sie können nicht selektiv entkommen
%
, da dies%
abhängig vom folgenden Zeichen immer eine besondere Bedeutung hat.In der Dokumentation von Python wird am Ende der zweiten Tabelle in diesem Abschnitt Folgendes angegeben:
Daher sollten Sie verwenden:
(Bitte beachten Sie die explizite Änderung von Tupel als Argument für
%
)Ohne darüber Bescheid zu wissen, hätte ich getan:
mit dem Wissen, das Sie offensichtlich schon hatten.
quelle
Wenn die Formatierungsvorlage aus einer Datei gelesen wurde und Sie nicht sicherstellen können, dass der Inhalt das Prozentzeichen verdoppelt, müssen Sie wahrscheinlich das Prozentzeichen erkennen und programmgesteuert entscheiden, ob es der Beginn eines Platzhalters ist oder nicht. Dann sollte der Parser auch Sequenzen wie
%d
(und andere Buchstaben, die verwendet werden können), aber auch%(xxx)s
usw. erkennen.Ein ähnliches Problem kann bei den neuen Formaten beobachtet werden - der Text kann geschweifte Klammern enthalten.
quelle
Wenn Sie Python 3.6 oder höher verwenden, können Sie f-string verwenden :
quelle
Ich habe verschiedene Methoden ausprobiert, um einen Nebenhandlungstitel zu drucken und zu sehen, wie sie funktionieren. Es ist anders, wenn ich Latex benutze.
In einem typischen Fall funktioniert es mit '%%' und 'string' + '%'.
Wenn Sie Latex verwenden, funktioniert es mit 'string' + '\%'
Also in einem typischen Fall:
Titelbeispiele mit%
Wenn wir Latex verwenden:
Wir bekommen folgendes: Titelbeispiel mit% und Latex
quelle