Python ConfigParser - Werte zwischen Anführungszeichen

8

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:

%Vor%

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.

    
SilentGhost 21.08.2009, 11:12
quelle

6 Antworten

9

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.

%Vor%

Wie Sie sehen, ändert .strip die Zeichenfolge nicht, wenn sie nicht mit der angegebenen Zeichenfolge beginnt und endet.

    
Mark Rushakoff 21.08.2009 11:17
quelle
5
%Vor%     
Anatoly Orlov 01.02.2010 12:23
quelle
2

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.

    
Davey 21.08.2009 11:21
quelle
2

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.

    
estani 07.12.2012 09:54
quelle
0

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.)

    
Jim Dennis 21.08.2009 22:27
quelle
-2

In dieser Situation ist die einfachste Lösung "eval ()".

Sie können sich jedoch Sorgen um die Sicherheit machen. Aber Sie können dies immer noch tun, indem Sie:

%Vor%

als Beispiel:

%Vor%     
Eacon 16.11.2015 07:11
quelle

Tags und Links