使用Python编辑yaml文件

时间:2014-12-03 08:58:08

标签: python

在这个answer中,描述了如何使用python编辑yaml文件的特定条目。我试图使用以下yaml文件的代码

 - fields: {domain: "www.mydomain.com", name: "www.mydomain.com"}
   model: sites.site
   pk: 1

但是

with open('my.yaml', 'r') as f:
    doc = yaml.load(f)
txt = doc["fields"]["domain"]
print txt

我收到错误

Traceback (most recent call last):
  File "./test.py", line 9, in <module>
    txt = doc["fields"]["domain"]
TypeError: list indices must be integers, not str

现在,我以为我可以在doc上使用密钥..有人可以帮帮我吗? :)

2 个答案:

答案 0 :(得分:1)

您获得的数据是一个列表。

更改

txt = doc["fields"]["domain"]

txt = doc[0]["fields"]["domain"]

答案 1 :(得分:1)

您可以使用密钥,但您使用-启动文档的事实意味着它是一个列表。如果您打印doc,您会看到:

[{'fields': {'domain': 'www.mydomain.com', 'name': 'www.mydomain.com'},
  'model': 'sites.site',
  'pk': 1}]

即一个由单个元素组成的列表,它本身就是一个字典。您可以像这样访问它:

txt = doc[0]["fields"]["domain"]

或者,如果您只有一个元素,请删除初始-(以及其他行的缩进)。