Python csv.DictWriter writerow()返回错误

时间:2015-09-26 10:32:14

标签: python csv

我正在尝试使用Python的csv包来操作csv文件。我想打开csv文件,操纵它(从某些人工制品中清除它),将更改写入另一个文件,完成。

我在写作部分遇到了麻烦。我不确定我是否正确使用了csv.DictWriter。我的代码的最后一行产生错误:

  

TypeError: init ()至少需要3个参数(给定2个)

为什么我收到此错误?

import csv


dataSource = 'dentistData.csv'
dataTarget = 'test.csv'

with open(dataSource) as source, open(dataTarget) as target:

    reader = csv.DictReader(source, delimiter=",", quotechar='"')
    writer = csv.DictWriter(target, delimiter=',')

    for row in reader:

        #if dentist_type is empty, add the type PRV (private dentist)
        if not row['dentist_type']:
            row['dentist_type']='PRV'
        print(row['dentist_type'])

        #remove lgh from street field
        writer.writerow(row)

1 个答案:

答案 0 :(得分:2)

您缺少fieldnames的必填参数[csv.DictWriter](https://docs.python.org/2/library/csv.html#csv.DictWriter)

  

fieldnames参数是一系列键,用于标识传递给writerow()方法的字典中的值被写入csvfile的顺序。

     

请注意,与DictReader类不同,DictWriter的fieldnames参数不是可选的。由于Python的dict对象没有排序,因此没有足够的信息来推断应该将行写入csvfile的顺序。

完整的签名是:

class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

doc:

中的示例
import csv

with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})