gpt4 book ai didi

Python - 将字典的字典写入 CSV

转载 作者:行者123 更新时间:2023-12-01 05:22:46 25 4
gpt4 key购买 nike

我是 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 结果。

顺便说一句,您不需要在此处使用 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)

关于Python - 将字典的字典写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com