pyyaml: dumping, sans balises
J'ai
>>> import yaml
>>> yaml.dump(u'abc')
"!!python/unicode 'abc'\n"
Mais je veux
>>> import yaml
>>> yaml.dump(u'abc', magic='something')
'abc\n'
Ce que la magie param forces aucun marquage?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
safe_dump
au lieu dedump
. Il suffit de garder à l'esprit qu'il ne sera pas en mesure de représenter arbitraire des objets Python ensuite. Aussi, lorsque vousload
le YAML, vous obtiendrez unstr
objet au lieu deunicode
.dump_all
?safe_dump_all
ainsi.Comment à ce sujet:
Cela semble faire du dumping unicode objets fonctionnent de la même que le dumping str objets pour moi (Python 2.6).
yaml
et non pas sur un objet.Vous avez besoin d'un nouveau dumper classe qui fait tout à la norme Dumper classe ne comprend, mais remplace la representers pour les str et unicode.
Qui conduit à
Certes, je suis encore perplexe sur la façon de garder cette jolie.
Et il se casse plus tard yaml.load()
peu plus de interjay excellente réponse, vous pouvez garder votre unicode sur un reload si vous prenez soin de votre fichier d'encodages.
test2.yaml contenu dans mon éditeur:
{key: "abc\xE7\uD83D\uDD11"}
de sortie d'impression:
('data2:', {'key': u'abc\xe7\U0001f511'}, 'type(data.key):', <type 'unicode'>)
abcç
Plus, après la lecture de http://nedbatchelder.com/blog/201302/war_is_peace.html je suis assez sûr que safe_load/safe_dump est où je veux être, de toute façon.
Je viens juste de commencer avec Python et YAML, mais sans doute cela peut aussi aider. Il suffit de comparer les sorties: