在 .yaml 文件中,我想指定某个字段的范围,例如,
list_field: range(10,50,5)
在上面,我打算将其list_field设置为“pythonic” range(10,50,5)。有办法实现吗?
YAML 没有办法在其规范中指定范围,因此如果您想要一种与语言无关的方式来指定范围,则必须在本机 YAML 之上发明自己的编码。一些例子:
list_field:
start: 10
step: 5
stop: 50
list_field2:
range:
- 10
- 50
- 5
list_field3: range(10,50,5)
Run Code Online (Sandbox Code Playgroud)
如果使用像pyyaml这样的东西,那么您可以使用自定义解析器和构造函数来教 pyyaml 如何始终将这些东西解码/编码为/来自 python range 对象(python3)或 python xrange 对象(python2)
如果您不关心其他语言,您也可以始终将范围存储为序列化对象,例如使用标签,例如!!python/object/apply:builtins.range [10, 50, 5]。它们看起来不是最漂亮的,但会反序列化为 pythonrange对象,而不需要编写自定义编码器/解码器代码:
>>> import yaml
>>> print(yaml.dump({'list_field': range(10, 50, 5)}))
list_field: !!python/object/apply:builtins.range [10, 50, 5]
>>> print(yaml.load(yaml.dump({'list_field': range(10, 50, 5)})))
{'list_field': range(10, 50, 5)}
Run Code Online (Sandbox Code Playgroud)
另请参阅如何在 YAML 中指定范围?
| 归档时间: |
|
| 查看次数: |
3141 次 |
| 最近记录: |