如何使用 csv DictWriter 将列表中的信息写入 csv 文件?

2023-12-05

使用csv模块,我一直在尝试将信息从列表传递/写入到 csv 文件中python使用字典编写器,我收到一个奇怪的错误,女巫将在实际代码下。我想知道代码中的错误是什么,以及我们如何修复它。

import csv 

names = ['kisha' ,'smith'  , '[email protected]', 40000  ,  '1-1-2029'   ,'janitor' ]

with open('employees.csv' , 'w')as employee_file:
     fieldnames2 = ['first' , 'last' , 'email' , 'salary' , 'DOB' , 'occupation']
     csvwriter = csv.DictWriter(employee_file , fieldnames = fieldnames2 , delimiter = ',')
     csvwriter.writeheader()
     for info in names:
        csvwriter.writerow(info)

我看过与此主题相关的其他问题,但修女适用于我。

ERROR:

Traceback (most recent call last):
  File "C:\Users\Kxrk\Downloads\Codes\Employee project\new.py", line 10, in <module>
    csvwriter.writerow(info)
  File "C:\Users\Kxrk\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 155, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "C:\Users\Kxrk\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 148, in _dict_to_list
    wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'str' object has no attribute 'keys'
[Finished in 0.1s]

writerow()的功能csv.DictWriter类期望参数为dict,而您正在向它传递字符串。中明确提到csv.DictWriter文档其中说:

创建一个像普通编写器一样操作但映射的对象 字典到输出行。 fieldnames 参数是一个序列 标识字典中值的顺序的键 传递给写入行()方法写入 csv 文件。

为了使其工作,请通过dict object (带有csv标题和相应列值之间的映射)。例如:

import csv

names = ['kisha' ,'smith'  , '[email protected]', 40000  ,  '1-1-2029'   ,'janitor' ]
fieldnames2 = ['first' , 'last' , 'email' , 'salary' , 'DOB' , 'occupation']

# for creating the dictionary object mapping "names" and "fieldnames2"
my_names_dict = dict(zip(fieldnames2, names))

with open('/path/to/my_file.csv' , 'w')as employee_file:
     csvwriter = csv.DictWriter(employee_file , fieldnames = fieldnames2 , delimiter = ',')
     csvwriter.writeheader()
     csvwriter.writerow(my_names_dict)

上面的代码将创建一个文件/path/to/my_file.csv内容为:

first,last,email,salary,DOB,occupation
kisha,smith,[email protected],40000,1-1-2029,janitor
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 csv DictWriter 将列表中的信息写入 csv 文件? 的相关文章