[英]Python - Writing a dictionary of dictionaries to CSV
我是python的新手,做了一個簡單的刮板,它將登錄到多個分析帳戶並將一些數據打印到CSV。 我要打印為CSV的格式是我使用以下代碼創建的字典:
import csv
from collections import OrderedDict
import time
def save_file(website, visitors, links, sources):
date = time.strftime("%d/%m/%Y")
d = OrderedDict()
d['Title'] = website # website string
d['Date'] = date # date string
d['Vistors'] = visitors # integer
d['Links'] = links # dictionary of links - URL : Clicks
d['Sources'] = sources # dictionary of sources - Source: Clicks
path = os.path.expanduser('~/Desktop/Traffic Report.csv')
with open(path, 'a') as f:
writer = csv.DictWriter(f, d, delimiter=',')
writer.writerow(d)
當我使用此代碼打印到CSV時,站點,日期和訪問者單元格都可以正常工作。 鏈接/源單元格(我正在使用beautifulsoup抓取的數據)充滿了多余的引號和字符,如下所示。
{"['www.example1.com/']": '1', "['www.example2.com']": '1', "['www.example3.com']": '1', "['www.example4.com/']": '3', "['www.example5.com/']": '1'}
{"['Links']": '2', "['Social media']": '5', "['Direct']": '2', "['Searches']": '1'}
有什么方法可以刪除許多這些字符並以以下格式打印到csv:www.example1.com:1,www.example2.com:1,www.example3.com:1 ...
任何幫助將不勝感激!
您必須自己進行格式化。 代替字典,構建一個字符串:
d['Links'] = ', '.join(['{}: {}'.format(*item) for item in links.items()])
d['Sources'] = ', '.join(['{}: {}'.format(*item) for item in sources.items()])
這將產生link1: count1, link2: count2
結果。
DictWriter
一下,您無需在此處使用OrderedDict
對象,只需按希望它們編寫的順序為DictWriter
一個鍵序列即可。 我還要在循環外一次打開CSV文件:
d = {
'Title': website,
'Date': date,
'Visitors': visitors,
'Links': ', '.join(['{}: {}'.format(*item) for item in links.items()]),
'Sources': ', '.join(['{}: {}'.format(*item) for item in sources.items()],
}
path = os.path.expanduser('~/Desktop/Traffic Report.csv')
with open(path, 'a') as f:
fields = ('Title', 'Date', 'Visitors', 'Links', 'Sources')
writer = csv.DictWriter(f, fields, delimiter=',')
writer.writerow(d)
def convert(dct):
return ", ".join("%s : %s" % (key, value) for key, value in dct.iteritems())
(如果使用.items()
使用.items()
而不是.iteritems()
),然后
d['Links'] = convert(links)
d['Sources'] = convert(sources)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.