Wie kann ich Prozent (%) in Python-Strings selektiv zurückhalten?
Ich habe den folgenden code
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Ich würde gerne die Ausgabe:
Print percent % in sentence and not have it break.
Was tatsächlich passiert:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
Kommentar zu dem Problem
Warum ist es nicht
\%
? Das war meine Vermutung, ich bin überrascht, es ist %%
statt - scheint ziemlich offensichtlich. die
% i
bedeutet "eine dezimale Darstellung einer ganzen Zahl, gepolstert Links mit Leerzeichen. Das escape ist um die Funktion, nicht auf die Sprache, syntax. Daher, wenn die Flucht war
\%
wäre es tatsächlich \\%
geschrieben in ordentlichen code. <Flucht - ><Flucht - >
ist das typische Muster, die ich gesehen habe, und \
, die passiert werden die gängigsten escape-Zeichen, für besser oder schlechter. @Demis und wie Sie entkommen
\
, wenn Sie drucken \\%
? Sie sind verpflichtet zu verlangen, die Flucht durch die Wiederholung von speziellen Zeichen, falls die Sonderzeichen sind auch nicht special, abhängig von den Umständen. Ich denke, dass es ärgerlich ist, in Python, die das literal % codiert ist, durch "%%" und nicht von "\%".
InformationsquelleAutor der Frage jondykeman | 2012-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Nolen Royalty
Alternativ, wie von Python 2.6, die Sie verwenden können, neue string-Formatierung (beschrieben in PEP 3101):
das ist besonders praktisch, da Ihre Saiten komplizierter.
InformationsquelleAutor der Antwort Karmel
versuchen Sie es mit
%%
drucken % - Zeichen .InformationsquelleAutor der Antwort openmeet123
Können Sie nicht selektiv Flucht
%
als%
hat immer eine Besondere Bedeutung, je nachdem das folgende Zeichen.In der Dokumentation von Python, am unteren Ende die zweite Tabelle in diesem Abschnitt, heißt es:
Daher sollten Sie verwenden:
(bitte beachten Sie den ausdrücklichen änderung an Tupel als argument
%
)Ohne wissen über die oben genannten, hätte ich das getan:
mit dem wissen, das Sie offenbar schon hatte.
InformationsquelleAutor der Antwort Anthon
Wenn die Format-Vorlage aus einer Datei Lesen, und Sie können nicht gewährleisten, das Gehalt verdoppelt sich das Prozent-Zeichen, dann haben Sie wahrscheinlich haben, um zu erkennen das Prozent-Zeichen und entscheiden Sie programmgesteuert, ob es ein Platzhalter ist oder nicht. Dann der parser sollte auch erkennen Sequenzen wie
%d
(und andere Buchstaben, die verwendet werden können), aber auch%(xxx)s
etc.Ähnliches problem beobachtet werden kann, mit der neue Formate -- der text kann keine geschweiften Klammern enthalten.
InformationsquelleAutor der Antwort pepr
Ich habe versucht, verschiedene Methoden, um das drucken einer Nebenhandlung Titel, Aussehen, wie Sie funktionieren. Anders ist es, wenn ich die Verwendung von Latex.
Funktioniert es mit '%%' und 'string'+'%' in einem typischen Fall.
Wenn Sie Latex es klappte mit 'string'+'\%'
Also in einem typischen Fall:
Titel Beispiele mit %
Wenn wir die Verwendung von latex:
Bekommen wir dies:
Titel Beispiel mit % und latex
InformationsquelleAutor der Antwort user245554