如何将safe_dump字典和列表转成YAML?
How to safe_dump the dictionary and list into YAML?
我想要输出为下面的 YAML:
- item: Food_eat
Food:
itemId: 42536216
category: fruit
moreInfo:
- "organic"
我已使用以下代码按照与上面相同的顺序进行打印,但输出结果与预期不符。
代码:
import yaml
yaml_result = [{'item': 'Food_eat', 'Food': {'foodNo': 42536216,'type': 'fruit','moreInfo': ['organic']}}]
print(yaml.safe_dump(yaml_result))
print(yaml_test)
输出:
- Food:
moreInfo:
- organic
category: fruit
itemId: 42536216
item: Food_eat
不确定如何获得所需的输出。
ruamel.yaml(免责声明:我是那个包的作者)确实有
此功能是内置的,因为有必要支持其功能
往返(加载、修改、转储)YAML 数据而不引入虚假数据
变化。除此之外,它默认为 YAML 1.2,而 PyYAML 仅
支持 YAML 1.1(10 多年前就过时了)。
import sys
import ruamel.yaml
data = [{'item': 'Food_eat', 'Food': {'foodNo': 42536216,'type': 'fruit','moreInfo': ['organic']}}]
yaml = ruamel.yaml.YAML()
yaml.indent(sequence=4, offset=2)
yaml.dump(data, sys.stdout)
给出:
- item: Food_eat
Food:
foodNo: 42536216
type: fruit
moreInfo:
- organic
这依赖于现代 Python 保持字典插入顺序的能力。为了
旧版本,比如 Python 2.7,你必须明确地做一个
对象 CommentedMap
(从 ruamel.yaml.comments
和
要么给它一个元组列表(以正确的顺序),要么分配
按照您希望的顺序转储键值对。
正如您在序列的缩进中看到的那样,破折号有一个偏移量,这是您
如果不重写其发射器,则无法使用 PyYAML。
在 PyYAML 中你不想做 print(yaml.safe_dump(data))
这是低效的。内存和时间,始终使用 yaml.safe_dump(data, sys.stdout)
代替。
我想要输出为下面的 YAML:
- item: Food_eat
Food:
itemId: 42536216
category: fruit
moreInfo:
- "organic"
我已使用以下代码按照与上面相同的顺序进行打印,但输出结果与预期不符。
代码:
import yaml
yaml_result = [{'item': 'Food_eat', 'Food': {'foodNo': 42536216,'type': 'fruit','moreInfo': ['organic']}}]
print(yaml.safe_dump(yaml_result))
print(yaml_test)
输出:
- Food:
moreInfo:
- organic
category: fruit
itemId: 42536216
item: Food_eat
不确定如何获得所需的输出。
ruamel.yaml(免责声明:我是那个包的作者)确实有 此功能是内置的,因为有必要支持其功能 往返(加载、修改、转储)YAML 数据而不引入虚假数据 变化。除此之外,它默认为 YAML 1.2,而 PyYAML 仅 支持 YAML 1.1(10 多年前就过时了)。
import sys
import ruamel.yaml
data = [{'item': 'Food_eat', 'Food': {'foodNo': 42536216,'type': 'fruit','moreInfo': ['organic']}}]
yaml = ruamel.yaml.YAML()
yaml.indent(sequence=4, offset=2)
yaml.dump(data, sys.stdout)
给出:
- item: Food_eat
Food:
foodNo: 42536216
type: fruit
moreInfo:
- organic
这依赖于现代 Python 保持字典插入顺序的能力。为了
旧版本,比如 Python 2.7,你必须明确地做一个
对象 CommentedMap
(从 ruamel.yaml.comments
和
要么给它一个元组列表(以正确的顺序),要么分配
按照您希望的顺序转储键值对。
正如您在序列的缩进中看到的那样,破折号有一个偏移量,这是您 如果不重写其发射器,则无法使用 PyYAML。
在 PyYAML 中你不想做 print(yaml.safe_dump(data))
这是低效的。内存和时间,始终使用 yaml.safe_dump(data, sys.stdout)
代替。