[英]csv file from yaml in python
4:
- a: [0.6511928334730416, -0.6444996859128429, 0.40070930065859994]
b: [-70.26386506067132, 19.563101216582368, 315.91419304402643]
c: [462, 429, 401, 389]
d: 1
5:
- e: [0.6511928334730416, -0.6444996859128429, 0.40070930065859994]
f: [-70.26386506067132, 19.563101216582368, 315.91419304402643]
g: [462, 429, 401, 389]
h: 1
這是我的 yml 格式,我只需要從中提取鍵 c 和 g 的值並創建一個 csv 文件。 我是python的新手。
任何人都可以在這里指導我在此先感謝
通過循環你可以做到,但這只是一個你也可以擁有更好的想法
試試這個:-
import yaml
MyDict = yaml.load(open('example.yaml'))
key = ['c','g']
for i in MyDict.values():
for j in i:
for k in key:
if k in j:
print(j.get(k))
如果您的 yaml 轉換為 dict 類似於:
d = {4:
{
'a': [0.6511928334730416, -0.6444996859128429, 0.40070930065859994],
'b': [-70.26386506067132, 19.563101216582368, 315.91419304402643],
'c': [462, 429, 401, 389],
'd': 1
},
5:
{'e': [0.6511928334730416, -0.6444996859128429, 0.40070930065859994],
'f': [-70.26386506067132, 19.563101216582368, 315.91419304402643],
'g': [462, 429, 401, 380],
'h': 1
}
}
您可以嘗試將以下代碼轉換為 CSV 值:
import csv
import itertools
# taking only the values of keys 'c' and 'g'
li = [i[j] for i in d.values() for j in i.keys() if j == "c" or j == "g"]
# the above list of list making a flat list for better result
merged = list(itertools.chain.from_iterable(li))
with open("filename.csv",'w') as myfile:
wr = csv.writer(myfile, lineterminator='\n')
# If you want first list to csv you can use li instead of merged
wr.writerow(merged)
我已經嘗試並測試了這個
import yaml
with open(r'test.yaml') as file:
documents = yaml.full_load(file)
for item, doc in documents.items():
print(item, ":", doc)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.