Verwenden Sie Python, um Hexentummen in YAML zu entleeren

Jetzt falle ich in ein YAML-Dokument. Es funktioniert, wie es sollte, zum größten Teil. Wenn ich versuche, ein Hexadezimal wie "0x2A" zu entleeren, konvertiert es in 42. Gibt es keine Möglichkeit, das hexadezimale Format zu behalten? Ein String wird nicht traurig arbeiten. Und int (0x2A, 16) gibt mir auch nur 42.

3 Solutions collect form web for “Verwenden Sie Python, um Hexentummen in YAML zu entleeren”

Sie können nach hex(0x2a) == hex(42) == '0x2a' .

Es sei denn, du suchst nach einer Möglichkeit, deine bestehende Dumping-Funktion zu überzeugen, hexadezimale statt dezimale Notation zu verwenden …


Beantworten Sie zu Ihrem Kommentar unten, wenn das Problem ist, dass Sie Großbuchstaben für die hexadezimalen Ziffern (aber Kleinbuchstaben für die 0x ) wollen, dann müssen Sie String Formatierung verwenden. Sie können eine der folgenden Optionen auswählen:

 "0x%02X" % 42 # the old way "0x{:02X}".format(42) == "0x2A" # the new way 

In beiden Fällen musst du die 0x explizit ausdrucken, gefolgt von einer hexadezimalen Zahl von mindestens zwei Ziffern in Großbuchstaben, links-gepolstert mit einer Null, wenn deine Nummer nur eine Ziffer hat. Dies wird durch das Format 02X , wie in C's printf .

Das sollte es tun:

 >>> import yaml >>> class HexInt(int): pass ... >>> def representer(dumper, data): ... return yaml.ScalarNode('tag:yaml.org,2002:int', hex(data)) ... >>> yaml.add_representer(HexInt, representer) >>> yaml.dump({"n": HexInt(42)}) '{n: 0x2a}\n' 

Die Darstellung aller int im Hex-Format, ohne HexInt Klasse, kann mit:

 def hexint_presenter(dumper, data): return dumper.represent_int(hex(data)) yaml.add_representer(int, hexint_presenter) 

Mit Bezug auf diese Antwort .

  • Die gelernte Darstellung der Daten aus dem unbeaufsichtigten Lernen in pylearn2
  • Gibt es eine Möglichkeit, ein Objekt mit PyYAML konstruieren zu konstruieren, wenn alle Knoten vollständig geladen werden?
  • In Python können Sie YAML-Zuordnungen als OrderedDicts laden?
  • Controlling Yaml Serialisierung Ordnung in Python
  • Wie kann ich Python-Code in YAML einbetten?
  • Ist es möglich, gültige YAML mit Anker / Referenzen auszuschließen, die mit Ruby oder Python deaktiviert sind?
  • Stellen Sie eine Instanz verschiedener Klassen mit der gleichen Basisklasse in Pyyaml ​​dar
  • Wie kann ich einen Kommentar zu einer YAML-Datei in Python hinzufügen?
  • Alle yaml Bibliotheken in Python, die Dumping von langen Strings als Block Literale oder gefaltete Blöcke unterstützen?
  • Kann YAML nicht richtig analysieren
  • Finden Sie die Regex für / <region> / <city> / <category>?
  • Python ist die beste Programmiersprache der Welt.