csvreader.fieldnames在python中未被识别为csv reader对象的属性

Jef*_*eff 5 python csv header

我试图使用CSV模块在Python中提取CSV文件的标题.

CSV文件非常扁平,看起来像:

这,那,其他

1,2,3

我正在做以下事情:

  1. 读入CSV文件并制作阅读器对象
  2. 将读者的迭代器推到下一行,强制它至少访问第一行一次(来自csv模块文档:"如果在创建对象时未作为参数传递,则在首次访问时或第一个记录时初始化此属性从文件中读取.")
  3. .fieldnames属性分配给变量并打印它

这里有一段代码来说明:

datafile = open(fname, "rb")
reader = csv.reader(datafile) #use csv module to parse in the header
reader.next() # read next line so header will be accessed
rfd_header = reader.fieldnames

print "header:\n"
print rfd_header
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

AttributeError:'_ csv.reader'对象没有属性'fieldnames'

这听起来像.fieldnames属性不存在,但是在Python 2.6.6的文档中(我使用的是相同版本的python)

我很感激任何洞察这个谜.如果有一种替代方法来提取标题也很棒!

谢谢.

Joh*_*hin 8

如果您真的想使用csv.reader而不是csv.DictReader,那么您需要做的就是替换

reader.next() # read next line so header will be accessed
rfd_header = reader.fieldnames
Run Code Online (Sandbox Code Playgroud)

通过

rfd_header = reader.next()
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。然后我得到`'_csv.reader'对象没有属性'next'`(Python 3) (2认同)

eum*_*iro 5

尝试csv.DictReader代替csv.reader。该文档也这么说:

DictReader对象具有以下公共属性:

csvreader.fieldnames-如果在创建对象时未作为参数传递,则在首次访问时或从文件中读取第一条记录时会初始化此属性。

http://docs.python.org/library/csv.html