Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 禁用PyYAML值转换_Python_Python 2.7_Yaml_Pyyaml - Fatal编程技术网

Python 禁用PyYAML值转换

Python 禁用PyYAML值转换,python,python-2.7,yaml,pyyaml,Python,Python 2.7,Yaml,Pyyaml,我刚刚开始使用PyYAML转换一些数据 我只使用了yaml.load函数,这对我来说已经足够好了,直到我注意到它试图将所有值转换为单编码字符串、int、日期等等 这在我的应用程序中可能是致命的,有没有办法避免这种转换? 我想把一切都当作字符串来接收。 我查看了构造函数,但找不到禁用此转换的方法 更新: 我从yaml.load得到的是一个订购的ICT,一切看起来都很好。唯一的问题是有些值是字符串,有些是int。我希望所有值都是字符串。我不想让pyyaml为我转换值。那么,您可以使用Loader=y

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

我只使用了
yaml.load
函数,这对我来说已经足够好了,直到我注意到它试图将所有值转换为单编码字符串、int、日期等等

这在我的应用程序中可能是致命的,有没有办法避免这种转换? 我想把一切都当作字符串来接收。 我查看了构造函数,但找不到禁用此转换的方法

更新:
我从yaml.load得到的是一个订购的ICT,一切看起来都很好。唯一的问题是有些值是字符串,有些是int。我希望所有值都是字符串。我不想让pyyaml为我转换值。

那么,您可以使用
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'}]

那你不是在解码YAML。此外,你到底想留下什么作为字符串,什么不是?如果将所有内容都保留为字符串,则需要
文件.read()
;-)我使用pyyaml解析的文件实际上不是yaml,但它已经足够接近了。因此我想避免类型转换。但是什么类型的类型转换呢?您想接收列表吗?字典?你想让布尔人转换吗?花车?任意深度还是固定格式?就目前情况而言,这是一个太少的指定。@delnan,请查看更新的信息作为一个示例,如果您有一个数据结构,其中两个字母的位置代码历史上被放入YAML unquoted,您希望上的位置代码
不会转换为
True
。注意:虽然这会禁用自动值转换,但它似乎也会导致“这也会导致键和(序列)元素被构造为字符串,而不仅仅是YAML文档中的标量值。