2014-12-03 140 views
0

在这个answer中描述了如何用python编辑yaml文件的特定条目。我试图用代码以下YAML文件用Python编辑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使用键..有人能帮助我吗? :)

回答

1

您收到的数据是一个列表。

变化

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

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

完美!谢谢:) – TheWaveLad 2014-12-03 09:13:43

+0

你可以'打印类型(doc)'来找出数据结构的类型。如果它只是简单的内置插件,'print doc'就足以让你看到数据是如何嵌套的。 – huggie 2014-12-03 09:16:40

1

您可以使用按键,而是你已经与-开始您的文档的事实意味着它是一个列表。如果打印doc,你会看到:

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

也就是说,由一个单一的元素,它本身就是一个字典的列表。你可以像这样访问:

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

,或者,如果你永远只能将有一个单一的元素,删除初始-(和缩进在其他行)。

+0

非常感谢你:) – TheWaveLad 2014-12-03 09:14:30