はい、コメントなどにアクセスできます。マッピング (python dict
) は のインスタンスにロードされ、CommentedMap
シーケンス (python list
) は のインスタンスにロードされますCommentedSeq
。これらはordereddict
およびCommentedBase
、それぞれのサブクラスです。のlist
とCommentedBase
.
CommentedBaseには、コメント、マージ、アンカー、およびフロー スタイルの情報が添付されるいくつかの属性があります。また、いくつかのマップ/シーケンス固有のヘルパー関数に依存するこれらの値を設定/取得するいくつかのメソッドがあります。
import sys
from ruamel.yaml import YAML
yaml_str = """\
a: 1 # comment 1
b: 2
c: 3
d: 4
e: 5
"""
yaml = YAML()
data = yaml.load(yaml_str)
data.yaml_add_eol_comment('comment 2', key='c')
data.yaml_add_eol_comment('# comment 3', key='e', column=8)
yaml.dump(data, sys.stdout)
あなたに与える:
a: 1 # comment 1
b: 2
c: 3 # comment 2
d: 4
e: 5 # comment 3
その点に注意してください:
- 開始列を指定しない場合、次の前のコメントの列が使用されます。
#
コメント文字列がその文字の組み合わせで始まっていない場合は、先頭とスペースが挿入されます。
- スカラーとコメントの間に少なくとも 1 つのスペースがあります。
主にライブラリ作成者の怠惰のために、インターフェースは十分に文書化されていません。コメントのテストとアンカーのテストを見て、いくつかの例を取得することをお勧めします。また、インタフェースは、キーと値の組み合わせだけでなく、キーへの EOL コメントの添付を許可するなど、属性コンテンツ レベルでいくつかの変更も必要とします。次の YAML は、期待どおり/正しくラウンドトリップしません。
abc: # this is the key
9989 # this is the value
ruamel.yaml
したがって、必要な機能を必ずラップして、下位互換性のない方法でインターフェイスが変更された場合に、変更を加えることができる単一のポイントがあるようにしてください。