【发布时间】:2021-01-02 18:53:39
【问题描述】:
我看到 PyYaml 在从 yaml 文件加载时截断零,如果有人使用:
yaml.safe_load(stream).
如果有人使用yaml.load(stream, Loader=yaml.BaseLoader),它可以修复,但这是否可取?
它适用于yaml.load,并且零不会被截断。
我想了解切换到 yaml.load 而不是 yaml.safe_load 是否安全?
例子:
测试yaml内容:
$cat test.yml
number: 5.10
代码:
$python -c 'import yaml, sys; content = yaml.safe_load(sys.stdin);
print(content) ' < test.yml
{'number': 5.1}
>
而我想要的是确切的数字。
$python -c 'import yaml, sys; content = yaml.load(sys.stdin,
Loader=yaml.BaseLoader); print(content) ' < test.yml
{u'number': u'5.10'}
这是将其更改为 yaml.load 的正确方法吗?
【问题讨论】:
-
你能举一个例子来说明你截断零的意思吗?
-
我不知道这是否有很大帮助。您添加的只是一些数字,但这并不能澄清任何事情。 YAML 文件中的数字是如何表示的?您究竟使用什么代码来加载文件,以及您使用什么代码来发现零被截断?它的输出是什么?可能stackoverflow.com/help/minimal-reproducible-example 中列出的很多内容都可以在这里添加。
-
这并不是一个完整的例子,但让我试着澄清一下。您的投诉是
yaml.safe_load("5.10")返回5.1吗?如果是这样,您的问题不是它“截断零”,而是它将它解析为浮点数。确切的解决方案可能取决于您要做什么,您能否提供有关您的用例的更多信息?
标签: python python-3.x yaml pyyaml