簡體   English   中英

Python 如何將嵌套字段添加到 Yaml 文件

[英]Python How to add nested fields to Yaml file

我需要修改 YAML 文件並添加幾個字段。我正在使用 ruamel.yaml package。

首先我加載 YAML 文件:

data = yaml.load(file_name)

我可以輕松添加新的簡單字段,例如-

data['prop1'] = "value1"

我面臨的問題是我需要添加一個嵌套字典並與數組合並:

prop2:
  prop3:
    - prop4:
        prop5:  "Some title" 
        prop6:  "Some more data"

我試圖定義——

record_to_add = dict(prop2 = dict(prop3 = ['prop4']))

這是可行的,但是當我嘗試在它下面添加 prop5 時,它失敗了-

record_to_add = dict(prop2 = dict(prop3 = ['prop4'= dict(prop5 = "Value")]))

我明白了

SyntaxError: 表達式不能包含賦值,也許你的意思是“==”?

我究竟做錯了什么?

這個問題與ruamel.yaml幾乎沒有關系。 這個:

['prop4'= dict(prop5 = "Value")]

無效 Python 作為列表 ( [ ] ) 需要逗號分隔值。 你需要使用類似的東西:

record_to_add = dict(prop2 = dict(prop3 = dict(prop4= [dict(prop5 = "Some title"), dict(prop6='Some more data'),])))

由於您的程序不完整,我不確定您是否使用舊的 API。 確保使用

import ruamel.yaml
yaml = ruamel.yaml.YAML()

不是

import ruamel.yaml as yaml

這是因為有 ['prop4'= <> ].Instead record_to_add record_to_add = dict(prop2 = dict(prop3 = [dict(prop4 = dict(prop5 = "Value"))]))應該工作。

另一種選擇是,

import yaml

data = {
     "prop1": {
         "prop3":
             [{ "prop4":
                   {
                       "prop5": "some title",
                       "prop6": "some more data"
                   }
             }]
     }
 }

with open(filename, 'w') as outfile:
    yaml.dump(data, outfile, default_flow_style=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM