15

PyYAMLを使用して一部のデータを変換し始めたところです。

私は関数を使用するだけyaml.loadで、すべての値をユニコード文字列、int、日付などに変換しようとすることに気付くまで、それで十分でした。

これは私のアプリケーションでは致命的となる可能性があります。この変換を回避する方法はありますか? すべてを文字列として受け取りたいです。コンストラクターを調べたところ、この変換を無効にする方法が見つかりませんでした。

更新: 私が得たものyaml.loadは、OrderedDictすべてが良さそうです。唯一の問題は、一部の値が文字列で、一部が int であることです。すべての値を文字列にしたいと思います。pyyaml に値を変換させたくありません。

4

1 に答える 1

31

さて、あなたはLoader=yaml.BaseLoaderすべてを文字列として残すために使うことができます:

>>> x = [[1,2,3], {1:2}]
>>> s = yaml.dump(x)
>>> s
'- [1, 2, 3]\n- {1: 2}\n'
>>> yaml.load(s)
[[1, 2, 3], {1: 2}]
>>> yaml.load(s, Loader=yaml.BaseLoader)
[[u'1', u'2', u'3'], {u'1': u'2'}]
于 2013-02-13T21:32:51.970 に答える