[英]Python: Write dictionary with multiple rows to CSV
我以前有一個字典,其中有多行來自我的問題 。 它是通過以下方式生成的:
import requests
from bs4 import BeautifulSoup
import re
import csv
links = ["34519-kevitsa-copper-concentrator-plant", "34520-kevitsa-copper-mine", "34356-glogow-copper-refinery"]
for l in links:
page = requests.get("https://www.industryabout.com/country-territories-3/2199-finland/copper-mining/"+l)
soup = BeautifulSoup(page.content, 'lxml')
rows = soup.select("strong")
d = {}
for r in rows:
name, value, *rest = r.text.split(":")
if not rest:
d[name] = value
print(d)
print(d.items())
給出:
dict_items([('商品','銅,鎳,金'),('區域','拉皮'),('類型','銅選礦廠']])
dict_items([('商品','銅,鎳,金'),('區域','拉皮'),('類型','露天礦']])
dict_items([('Commodities','Copper'),('Area','Dolnoslaskie'),('Type','Copper Refinery']])
但是,當我使用以下解決方案中的任何一種將其寫入CSV時:“ 將字典寫到csv文件中,每個'key:value'一行, ”僅得到LAST字典項,其余的省略。
Commodities;Copper
Area;Dolnoslaskie
Type;Copper Refinery
如何編寫具有以下內容的CSV文件:
Commodities;Area;Type
Copper, Nickel, Gold;Lappi;Copper Concentrator Plant
Copper, Nickel, Gold;Lappi;Open-pit mine
Copper;Dolnoslaskie;Copper Refinery
我也嘗試過更改為數組,但是找不到array[name] = value
的解決方案。
這個答案似乎很完美,但是iterkeys僅適用於Python 2。
with open('my_data.csv', 'wb') as ofile:
writer = csv.writer(ofile, delimiter='\t')
writer.writerow(['ID', 'dict1', 'dict2', 'dict3'])
for key in ddict.iterkeys():
writer.writerow([key] + [d[key] for d in dicts])
import csv
with open('data.csv', 'w') as outfile:
writer = csv.DictWriter(outfile, ['Commodities', 'Area', 'Type'], delimiter=';')
writer.writeheader()
for l in links:
...
print(d)
writer.writerow(d)
你可以試試看
#!python
# -*- coding: utf-8 -*-#
d = {k:v for (k,v) in zip(list('abc'),range(3))}
print(d)
with open('a.txt','w') as fo:
for i in d:
line = '{};{}\n'.format(i,d[i])
fo.write(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.