Dokument wird als Rohzeichenfolge in yaml mit PyYAML geladen

8

Ich möchte YAML-Dokumente wie die folgenden analysieren

%Vor%

Wenn ich load_all mit PyYAML, bekomme ich folgende

%Vor%

Was ich hier erreichen möchte, ist, dass die yaml-Datei zwei Dokumente enthalten soll, und das zweite soll als ein einzelnes Zeichenkettendokument interpretiert werden, genauer gesagt als ein großer Textkörper mit Abschriftenformatierung. Ich möchte nicht, dass es als YAML-Syntax analysiert wird.

Im obigen Beispiel gibt PyYAML das zweite Dokument als eine einzelne Zeichenfolge zurück. Aber wenn das zweite Dokument zum Beispiel ein : -Zeichen anstelle von ! hat, bekomme ich einen Syntaxfehler. Dies liegt daran, dass PyYAML das Zeug in diesem Dokument analysiert.

Gibt es eine Möglichkeit, PyYAML zu sagen, dass das zweite Dokument nur eine rohe Zeichenkette ist und es nicht analysiert?

Bearbeiten : Ein paar exzellente Antworten dort. Bei der Verwendung von Anführungszeichen oder der literalen Syntax, die das genannte Problem löst, möchte ich, dass die Benutzer in der Lage sind, den einfachen Text ohne zusätzlichen Aufwand zu schreiben. Nur die drei - 's (oder . ' s) und schreibe eine große Menge an Klartext ab. Das könnte auch Zitate beinhalten. Also würde ich gerne wissen, ob ich PyYAML sagen kann, nur ein Dokument zu analysieren und die zweite mir roh zu geben.

Eidt 2 : Also passt man die Idee von agf an, anstatt ein try / except zu verwenden, da das zweite Dokument eine gültige yaml-Syntax sein könnte,

%Vor%

Vielen Dank.

    
Shrikant Sharat 25.07.2011, 12:38
quelle

2 Antworten

5

Sie können

tun %Vor%

Wenn Sie keine Kontrolle über das Format des Originaldokuments haben.

Aus den PyYAML-Dokumenten,

  

Double-quoted ist der leistungsstärkste Stil und der einzige Stil, der einen beliebigen skalaren Wert ausdrücken kann . Skalare mit doppelten Anführungszeichen ermöglichen das Entkommen. Mit den Escaping-Sequenzen \ x ** und \ u **** können Sie beliebige ASCII- oder Unicode-Zeichen ausgeben.

Es klingt also so, als ob es keine Möglichkeit gibt, einen beliebigen Skalar im Parsing darzustellen, wenn es nicht doppelt zitiert wird.

    
agf 25.07.2011, 12:55
quelle
2

Wenn Sie das Doppelpunkt-Zeichen in YAML nur ausschließen möchten, schließen Sie es in einfache oder doppelte Anführungszeichen ein. Außerdem können Sie literalen Stil für Ihr zweites Dokument versuchen, das als einzelner Skalar behandelt werden soll.

    
Senthil Kumaran 25.07.2011 12:49
quelle

Tags und Links