gpt4 book ai didi

python - 如何使用 csv.DictReader 跳过前标题行?

转载 作者:太空狗 更新时间:2023-10-29 18:03:21 26 4
gpt4 key购买 nike

我想csv.DictReader 从文件中推导出字段名。 The docs“如果省略字段名参数,csv 文件第一行中的值将用作字段名。”,但在我的例子中,第一行包含标题,第二行包含名字。

我无法根据 Python 3.2 skip a line in csv.DictReader 应用 next(reader)因为字段名分配发生在初始化读取器时(或者我做错了)。

csv 文件(从 Excel 2010 导出,original source):

CanVec v1.1.0,,,,,,,,,^M
Entity,Attributes combination,"Specification Code
Point","Specification Code
Line","Specification Code
Area",Generic Code,Theme,"GML - Entity name
Shape - File name
Point","GML - Entity name
Shape - File name
Line","GML - Entity name
Shape - File name
Area"^M
Amusement park,Amusement park,,,2260012,2260009,LX,,,LX_2260009_2^M
Auto wrecker,Auto wrecker,,,2360012,2360009,IC,,,IC_2360009_2^M

我的代码:

f = open(entities_table,'rb')
try:
dialect = csv.Sniffer().sniff(f.read(1024))
f.seek(0)

reader = csv.DictReader(f, dialect=dialect)
print 'I think the field names are:\n%s\n' % (reader.fieldnames)

i = 0
for row in reader:
if i < 20:
print row
i = i + 1

finally:
f.close()

当前结果:

I think the field names are:
['CanVec v1.1.0', '', '', '', '', '', '', '', '', '']

期望的结果:

I think the field names are:
['Entity','Attributes combination','"Specification Code Point"',...snip]

我意识到简单地删除第一行并继续操作是权宜之计,但我正在尝试尽可能接近只读取原位数据并尽量减少人工干预。

最佳答案

f.seek(0) 之后,插入:

next(f)

在初始化 DictReader 之前将文件指针前进到第二行。

关于python - 如何使用 csv.DictReader 跳过前标题行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com