Python将CSV文件转换为字典格式文件时报AttributeError错误咨询
错误原因
- 语法报错的直接原因:你调用
dict_writer_obj.writerows(file)时传入的是原始文件对象,迭代文件对象得到的是每一行的字符串,而csv.DictWriter.writerows()要求传入的可迭代对象的元素必须是字典类型,字符串不存在keys属性,因此触发AttributeError: 'str' object has no attribute 'keys'报错。 - 逻辑使用错误:你的需求是输出每行Python字典的字面量格式,但是
csv.DictWriter的作用是将字典转换为逗号分隔的普通CSV行,完全不符合你的输出预期,不需要使用这个类。
解决方法
直接遍历csv.DictReader返回的字典对象,将其转换为字符串后逐行写入目标文件即可,修正后代码如下:
import csv with open('temp.csv', 'w', encoding='utf-8') as temp_file: with open('dictReader.csv', 'r', encoding='utf-8') as src_file: # 读取源CSV为字典迭代器 dict_reader = csv.DictReader(src_file) for row in dict_reader: # 直接将字典转为字符串写入,加换行符 temp_file.write(f"{row}\n")
运行上述代码后,temp.csv的内容就和你期望的输出完全一致。
内容的提问来源于stack exchange,提问作者bern212
相关产品推荐
相关产品推荐

