Python如何将返回的字典列表正确解析写入CSV文件
CSV仅写入表头无法导出实际数据问题修复
核心错误点
- 数据集取值错误:原代码
keywords = output['keywords']['word']['count']写法完全错误,output['keywords']本身就是存储所有词频字典的列表,列表不支持用字符串键做索引,这行运行就会抛类型错误,后续遍历数据的逻辑根本跑不起来,所以文件里只会留下提前写入的表头。 - 循环逻辑语法错误:原代码循环内写的
keyword = keywords(["word"], keywords["count"])有明显语法问题,既错把列表当函数调用,又尝试对整个关键词列表取count键,根本提取不到单条数据的字段值。 - 写入参数不符合要求:原代码没有按
writerow的参数要求,按顺序提取单条数据的word、count值组成序列,就算循环能正常执行,也写不出正确的业务数据。
修复后可直接运行的代码
import csv site = 'https://www.microblink.com' output = analyze(site) # 直接获取存储所有词频字典的列表 keywords = output['keywords'] fields = ['word', 'count'] with open('mbtest.csv', 'w', newline='', encoding='utf-8') as csv_file: csvwriter = csv.writer(csv_file) # 写入表头行 csvwriter.writerow(fields) # 遍历每条词频数据 for keyword_item in keywords: # 按表头顺序拼接行数据 current_row = [keyword_item['word'], keyword_item['count']] csvwriter.writerow(current_row)
更简便的字典写入方案
如果不想手动拼接每行的字段顺序,可以直接用CSV模块内置的DictWriter适配字典结构写入,代码更简洁不易出错:
import csv site = 'https://www.microblink.com' output = analyze(site) keywords = output['keywords'] fields = ['word', 'count'] with open('mbtest.csv', 'w', newline='', encoding='utf-8') as csv_file: # 初始化字典写入器,指定字段顺序 csvwriter = csv.DictWriter(csv_file, fieldnames=fields) # 自动写入表头 csvwriter.writeheader() # 一次性写入所有字典数据 csvwriter.writerows(keywords)
内容的提问来源于stack exchange,提问作者Tori Elstrom
相关产品推荐
相关产品推荐

