2014-12-03 92 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