在这个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
上使用密钥..有人可以帮帮我吗? :)
答案 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"]
或者,如果您只有一个元素,请删除初始-
(以及其他行的缩进)。