You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DictWriter写入含列表值的字典时遇格式问题

解决CSV写入格式不符问题

你的核心问题是代码逻辑不符合需求:原代码试图用DictWriter配合zip(*final_dict.values())写入,但这种写法会把各网站的水果列表按位置拆分,生成多列多行的格式,和你想要的「每行对应一个网站+逗号分隔的列表」完全不符。

正确实现方案

方案1:用csv.writer直接写入(推荐,更直观)

import csv

# 假设你的爬取结果字典是这个
final_dict = {'Website A': ['apple','orange','pear'], 'Website B': ['apple','watermelon'], 'Website C': ['orange','pear']}

with open('test.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    # 写入表头
    writer.writerow(['Website', 'Fruits'])
    # 遍历字典,每行写入网站名和逗号拼接的水果列表
    for site_name, fruit_list in final_dict.items():
        writer.writerow([site_name, ','.join(fruit_list)])

方案2:用DictWriter实现(适合需要固定字段的场景)

import csv

final_dict = {'Website A': ['apple','orange','pear'], 'Website B': ['apple','watermelon'], 'Website C': ['orange','pear']}

with open('test.csv', 'w', newline='', encoding='utf-8') as csvfile:
    # 定义表头字段
    fieldnames = ['Website', 'Fruits']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=';')
    writer.writeheader()
    # 构造每个网站对应的字典条目并写入
    for site_name, fruit_list in final_dict.items():
        writer.writerow({
            'Website': site_name,
            'Fruits': ','.join(fruit_list)
        })

输出效果

运行后CSV内容会是:

Website;Fruits
Website A;apple,orange,pear
Website B;apple,watermelon
Website C;orange,pear

内容的提问来源于stack exchange,提问作者wooziecodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:24:10