我该如何解析Python中的YAML文件

我如何解析Python中的YAML文件?


不依赖C头文件的最简单纯粹的方法是PyYaml:

#!/usr/bin/env python

import yaml

with open("example.yaml", 'r') as stream:
    try:
        print(yaml.load(stream))
    except yaml.YAMLError as exc:
        print(exc)

就是这样。 更多信息在这里:

http://pyyaml.org/wiki/PyYAMLDocumentation


如果您的YAML符合YAML 1.2规范(2009年发布),那么您应该使用ruamel.yaml(声明:我是该包的作者)。 它基本上是PyYAML的超集,它支持大多数YAML 1.1(从2005年开始)。

如果你想在往返时保留你的评论,你当然应该使用ruamel.yaml。

升级@ Jon的例子很简单:

import ruamel.yaml as yaml

with open("example.yaml") as stream:
    try:
        print(yaml.load(stream))
    except yaml.YAMLError as exc:
        print(exc)

用Python 2 + 3(和unicode)读取和写入YAML文件

# -*- coding: utf-8 -*-
import yaml
import io

# Define data
data = {'a list': [1, 42, 3.141, 1337, 'help', u'€'],
        'a string': 'bla',
        'another dict': {'foo': 'bar',
                         'key': 'value',
                         'the answer': 42}}

# Write YAML file
with io.open('data.yaml', 'w', encoding='utf8') as outfile:
    yaml.dump(data, outfile, default_flow_style=False, allow_unicode=True)

# Read YAML file
with open("data.yaml", 'r') as stream:
    data_loaded = yaml.load(stream)

print(data == data_loaded)

创建了YAML文件

a list:
- 1
- 42
- 3.141
- 1337
- help
- €
a string: bla
another dict:
  foo: bar
  key: value
  the answer: 42

通用文件结尾

.yml.yaml

备择方案

  • CSV:超简单格式(读写)
  • JSON:写出人类可读的数据很棒; 非常常用(读写)
  • YAML:YAML是JSON的超集,但更易于阅读(读取和写入,比较JSON和YAML)
  • pickle:一种Python序列化格式(读写)
  • MessagePack(Python包):更紧凑的表示(读写)
  • HDF5(Python包):很好的矩阵(读写)
  • XML:存在*叹*(读写)
  • 对于您的应用程序,以下内容可能很重要:

  • 其他编程语言的支持
  • 阅读/写作表现
  • 紧凑(文件大小)
  • 另请参阅:比较数据序列化格式

    如果您正在寻找制作配置文件的方式,您可能需要阅读我的简短文章Python配置文件

    链接地址: http://www.djcxy.com/p/20133.html

    上一篇: How can I parse a YAML file in Python

    下一篇: Eclipse Neon Json editor