我正在使用pyyaml,我正在加载file.yml
stream = open("file.yml", "r")
results = yaml.load_all(stream)
结果现在包含一个生成器对象。
然后,我正在尝试处理这个问题:
for key, value in results:
print(key, "->", value)
如果我的file.yml中有多个“yaml元素”,这样可以正常工作。例如:
foo:bar
你好:世界
但是,如果我的file.yml中只有一个“yaml元素”,则无效。例如:
foo:bar
错误是:ValueError: need more than 1 value to unpack
我正在使用python 3
我该如何解决这个问题? file.yml可以包含1个或多个元素。
答案 0 :(得分:2)
results
是一个字典列表,所以不要迭代它,而是要迭代字典:
for dictionary in results:
for key, value in dictionary.items():
print(key, "->", value)
所以你试图将键分配给一个字典,并将值赋给另一个字典,因为你是从列表中解包而不是字典。 dict.items()
返回一个元组列表,其中第一个位置的键和元组另一个中的值。
答案 1 :(得分:1)
results = yaml.load_all(stream)
for doc in results:
for k, v in doc.items():
print(k, "->", v)