15

我刚刚开始使用PyYAML转换一些数据。

我只是使用这个yaml.load函数,它对我来说已经足够好了,直到我注意到它试图将所有值转换为 uni-coded string、int、dates 等等。

这在我的应用程序中可能是致命的,有没有办法避免这种转换?我想以字符串的形式接收所有内容。我查看了构造函数,找不到禁用此转换的方法。

更新:我得到的yaml.load是一个OrderedDict,一切看起来都很好。唯一的问题是有些值是字符串,有些是整数。我想将所有值都作为字符串。我不希望 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 回答