在 Python 中,要输出这种紧凑风格的 YAML(类似于 JSON 的 {}
格式),可以使用 pyyaml
库并调整输出格式。以下是实现方法:
方法1:使用 pyyaml
并禁用默认换行
import yaml
data = {
"count": 122,
"grade": 4,
"data": [1, 0, 4, 0, 6, 12, 14, 16, 300, 348, 396, 412, 428, 0, 60, 4, 1, 3, 4, 5, 0, 72, 2, 2, 3, 0, 0, 0, 90, 2, 6, 7, 0, 0, 0, 115, 1, 4, 0, 0, 0, 0, 165, 1, 6, 0, 0, 0, 0, 195, 1, 7, 0, 0, 0, 1, 60, 1, 1, 0, 0, 0, 1, 72, 2, 2, 5, 0, 0, 1, 90, 1, 8, 0, 0, 0, 1, 115, 2, 9, 10, 0, 0, 1, 135, 1, 10, 0, 0, 0, 1, 165, 1, 11, 0, 0, 0, 2, 115, 1, 12, 0, 0, 0, 2, 135, 1, 13, 0, 0, 0, 3, 115, 1, 12, 0, 0, 0, 3, 135, 1, 13, 0, 0, 0]
}
# 禁用默认的换行和缩进
output = yaml.dump(data, default_flow_style=True, width=float("inf"))
print(output)
方法2:直接生成紧凑格式字符串(更简单)
data = {
"count": 122,
"grade": 4,
"data": [1, 0, 4, 0, 6, 12, 14, 16, 300, 348, 396, 412, 428, 0, 60, 4, 1, 3, 4, 5, 0, 72, 2, 2, 3, 0, 0, 0, 90, 2, 6, 7, 0, 0, 0, 115, 1, 4, 0, 0, 0, 0, 165, 1, 6, 0, 0, 0, 0, 195, 1, 7, 0, 0, 0, 1, 60, 1, 1, 0, 0, 0, 1, 72, 2, 2, 5, 0, 0, 1, 90, 1, 8, 0, 0, 0, 1, 115, 2, 9, 10, 0, 0, 1, 135, 1, 10, 0, 0, 0, 1, 165, 1, 11, 0, 0, 0, 2, 115, 1, 12, 0, 0, 0, 2, 135, 1, 13, 0, 0, 0, 3, 115, 1, 12, 0, 0, 0, 3, 135, 1, 13, 0, 0, 0]
}
# 直接生成紧凑格式(类似JSON的stringify)
output = "{" + f"count: {data['count']}, grade: {data['grade']}, data: {data['data']}" + "}"
print(output)
输出结果
两种方法都会生成如下紧凑格式的 YAML:
{count: 122, grade: 4, data: [1, 0, 4, 0, 6, 12, 14, 16, 300, 348, 396, 412, 428, 0, 60, 4, 1, 3, 4, 5, 0, 72, 2, 2, 3, 0, 0, 0, 90, 2, 6, 7, 0, 0, 0, 115, 1, 4, 0, 0, 0, 0, 165, 1, 6, 0, 0, 0, 0, 195, 1, 7, 0, 0, 0, 1, 60, 1, 1, 0, 0, 0, 1, 72, 2, 2, 5, 0, 0, 1, 90, 1, 8, 0, 0, 0, 1, 115, 2, 9, 10, 0, 0, 1, 135, 1, 10, 0, 0, 0, 1, 165, 1, 11, 0, 0, 0, 2, 115, 1, 12, 0, 0, 0, 2, 135, 1, 13, 0, 0, 0, 3, 115, 1, 12, 0, 0, 0, 3, 135, 1, 13, 0, 0, 0]}
关键参数说明
default_flow_style=True
:强制使用{}
和[]
的紧凑格式width=float("inf")
:禁止 YAML 自动换行
如果不需要严格的 YAML 格式,方法2(直接字符串拼接)更简单直接。
你可以使用 Python 的内建
yaml
库(如PyYAML
)来生成符合你指定格式的 YAML 文件,使用列表的紧凑格式(即方括号[ ]
包裹、逗号分隔)。以下是示例代码:示例 Python 代码:
关键点:
default_flow_style=True
使data
以[1, 2, 3]
紧凑风格输出。PyYAML
库(安装命令:pip install pyyaml
)输出结果: