使用 Python ruamel.yaml 在 YAML 中添加注释说明

使用 YAML 的好处之一是可以添加注释说明

例如:(人资.yaml)

ChuaTony: 
  公司: 文传
  联络: 
    - 公司: '1422031030'
    - 手机: '18650144578'
    - 住家: '2233068479'
  住址: 
    - 公司: 褔建。
    - 住家: 台中。
  交通: 无
  附件: 
Tom: 
  公司: 天褔
  联络: 
    - 公司: '1422031030'
    - 手机: '18650123456'
    - 住家: '2233061234'
  住址: 
    - 公司: 褔建。
    - 住家: 台北。
  交通: 自行车
  附件: 

如果想添加注释说明该如何做呢?

使用

.yaml_add_eol_comment

.yaml_set_comment_before_after_key

.yaml_set_start_comment

来处理即可:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a YAML module '

__author__ = 'Chua Tony'

import ruamel.yaml

#开档
with open("人资.yaml", "r",encoding="utf-8") as docs:
	try:
		#alldata = ruamel.yaml.load(docs, Loader=ruamel.yaml.RoundTripLoader) #使用 Loader=ruamel.yaml.RoundTripLoader
		alldata = ruamel.yaml.round_trip_load(docs)
	except ruamel.yaml.YAMLError as exc:
		print(exc)

#印出
x = 0
for data in alldata:
	x += 1
	alldata[data].yaml_add_eol_comment('No.'+str( x ), column=12) #添加注释说明
	alldata[data].yaml_set_comment_before_after_key('联络', '2017-05-18', after='Contact', after_indent=2) #添加注释说明於行上下
	alldata[data]['住址'].yaml_set_start_comment('Address', indent=2) #添加英文注释说明於行下

#修改
alldata['Tom']['联络'][0]['公司']='963852741'

#写档
with open('人资comment.yaml', 'w+', encoding='utf8') as outfile:
	#ruamel.yaml.dump(alldata, outfile, default_flow_style=False, allow_unicode=True, Dumper=ruamel.yaml.RoundTripDumper, indent=2, block_seq_indent=2) #使用 Dumper=ruamel.yaml.RoundTripDumper
	ruamel.yaml.round_trip_dump(alldata, outfile, default_flow_style=False, allow_unicode=True, indent=2, block_seq_indent=2) #indent:缩进 block_seq_indent:区块缩进

output:(人资comment.yaml)

ChuaTony:   # No.1
  公司: 文传
# 2017-05-18
  联络:
  # Contact
      - 公司: '1422031030'
      - 手机: '18650144578'
      - 住家: '2233068479'
  住址:
  # Address
      - 公司: 褔建。
      - 住家: 台中。
  交通: 无
  附件:
Tom:        # No.2
  公司: 天褔
# 2017-05-18
  联络:
  # Contact
      - 公司: '963852741'
      - 手机: '18650123456'
      - 住家: '2233061234'
  住址:
  # Address
      - 公司: 褔建。
      - 住家: 台北。
  交通: 自行车
  附件:



 

你可能感兴趣的:(使用 Python ruamel.yaml 在 YAML 中添加注释说明)