如何使用Python csv库中的DictReader类?

2 投票
2 回答
6716 浏览
提问于 2025-04-17 03:17

我正在学习我的第一个Python项目,但在使用Python的csv.DictReader类来读取一个CSV文件时遇到了困难。

代码如下:

import os
import csv

f = open('MyCsvFile.txt', 'rb')
d =  csv.Sniffer().sniff(f.read(1024), ',')
csvDict = csv.DictReader(csvfile = f, dialect = d)

for line in csvDict:
    print line['Balance Date ']

这个CSV文件大致长这样:

"Balance Date ","Currency Code ","Main Account","Balance Float  - 1 Day",... forty more fields
"09/01/2011","EUR","4000519","                .00",...
"09/01/2011","GBP","4000519","                .00",...
"09/01/2011","JPY","4000519","                .00",...

Python对我使用DictReader的方式不太满意。

g:\work\csvtest>python csvtest.py
Traceback (most recent call last):
  File "csvtest.py", line 6, in <module>
    csvDict = csv.DictReader(csvfile = f, dialect = d)
TypeError: __init__() takes at least 2 arguments (2 given)

有人能帮我指点一下方向吗?

2 个回答

3

你需要把 csvfile 作为位置参数传递,而不是作为关键字参数传递:

csvDict = csv.DictReader(f, dialect = d)
2

根据文档中提供的代码,这样做会更好:

with open('MyCsvFile.txt', 'rb') as source:
    dialect = csv.Sniffer().sniff(source.read(1024), ',')
    source.seek(0)
    csvDict = csv.DictReader(source, dialect)

撰写回答