Bei Verwendung von ConfigParser
möchte ich Werte verwenden, die mehrere Wörter enthalten, die in der cfg-Datei gesetzt sind. In diesem Fall erscheint es mir trivial, die Zeichenfolge mit Anführungszeichen wie ( example.cfg
) zu umgeben:
Mein Problem ist, dass in diesem Fall python die Anführungszeichen auch an die Zeichenkette anfügt, wenn der Wert wie folgt verwendet wird:
%Vor% Ich bin mir sicher, dass es eine eingebaute Funktion gibt, die es ermöglicht, nur 'value in some words'
anstelle von '"value in some words"'
zu drucken. Wie ist es möglich? Danke.
Ich habe in dem Handbuch zu configparser nichts gesehen, aber Sie könnten einfach die Methode .strip
verwenden von Strings, um die führenden und abschließenden doppelten Anführungszeichen loszuwerden.
Wie Sie sehen, ändert .strip
die Zeichenfolge nicht, wenn sie nicht mit der angegebenen Zeichenfolge beginnt und endet.
Entschuldigung, die Lösung war auch trivial - ich kann einfach die Anführungszeichen lassen, es sieht so aus, als ob Python einfach die rechte Seite des Gleichheitszeichens einnimmt.
Die Frage ist schon ziemlich alt, aber in 2.6 müssen Sie zumindest keine Anführungszeichen verwenden, da Leerzeichen beibehalten werden.
%Vor% Dies gilt jedoch weder für führende noch für nachfolgende Leerzeichen! Wenn Sie diese beibehalten möchten, müssen Sie sie in Anführungszeichen setzen und wie vorgeschlagen vorgehen. Verwenden Sie das Schlüsselwort eval
nicht, da Sie eine große Sicherheitslücke haben werden.
Davey,
Wie Sie sagen, können Sie die Anführungszeichen einfach weglassen.
Für ein Projekt, an dem ich arbeite, wollte ich in der Lage sein, fast jedes Python-String-Literal als Wert für einige meiner Konfigurationsoptionen darzustellen, und zwar so, dass ich einige von ihnen als rohe Zeichenkette behandeln könnte Literale. (Ich möchte diese Konfiguration in der Lage sein, Dinge wie \ n, \ x1b usw. zu behandeln).
In diesem Fall habe ich etwas verwendet wie:
%Vor%... was ich denke, wird alles behandeln, was nicht dreifach-einfache und dreifach-doppelte Zeichenketten enthält.
(Dieser eine Ecke Fall ist weit über meine Anforderungen hinaus).
Es gibt eine Kuriosität dieses Codes hier auf SO; Der Syntax-Highlighter scheint durcheinander zu sein die Tatsache, dass mein Docstring eine rohe Zeichenkette ist. Das war notwendig, um doctest für diese spezielle Funktion glücklich zu machen.)
Tags und Links python configparser