禁用 PyYAML 值转换
我刚开始使用PyYAML来转换一些数据。
我用的是yaml.load
这个函数,最开始觉得挺好用的,直到我发现它会把所有的值都转换成Unicode字符串、整数、日期等等。
这在我的应用中可能会造成严重问题,有没有办法避免这种转换?我希望所有的值都能以字符串的形式返回。我查看了构造函数,但没找到关闭这种转换的方法。
更新:
我从yaml.load
得到的是一个OrderedDict
,看起来一切正常。唯一的问题是,有些值是字符串,有些是整数。我希望所有的值都能以字符串的形式出现。我不想让pyyaml帮我转换这些值。
1 个回答
32
好吧,你可以使用 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'}]