我如何parsingPython中的YAML文件

我如何parsingPython中的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) 

Err ..就是这样…在Java中有多less行代码会带我…有什么想法? :)更多信息在这里:

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) 

创build了YAML文件

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

通用文件结尾

.yml.yaml

备择scheme

  • CSV:超简单格式( 读写 )
  • JSON:写出人类可读的数据很好, 非常常用( 读写 )
  • YAML:YAML是JSON的超集,但更容易阅读( 读写 , 比较JSON和YAML )
  • pickle:Python序列化格式( 读写 )
  • MessagePack ( Python包 ):更紧凑的表示( 读写 )
  • HDF5 ( Python包 ):很好的matrix( 读写 )
  • XML:也存在*叹*( 读写 )

对于您的应用程序,以下可能是重要的:

  • 支持其他编程语言
  • 阅读/写作performance
  • 紧凑(文件大小)

另请参阅: 数据序列化格式的比较

如果你正在寻找一种configuration文件的方式,你可能想阅读我的简短文章Pythonconfiguration文件

 #!/usr/bin/env python import sys import yaml def main(argv): with open(argv[0]) as stream: try: #print(yaml.load(stream)) return 0 except yaml.YAMLError as exc: print(exc) return 1 if __name__ == "__main__": sys.exit(main(sys.argv[1:])) 

导入yaml模块并将文件加载到名为“Dict”的字典中:

 import yaml Dict = yaml.load(open('filename')) 

这就是你所需要的。 现在整个yaml文件在'Dict'字典中。