php 读csv跳过标题,python – 如何用csv.DictReader跳过预标题行?

在使用Python的csv.DictReader时遇到问题,尽管文档表明当省略fieldnames参数时,会从文件的第一行获取字段名,但实际情况是第一行是标题,第二行才是字段名。尝试使用csv.Sniffer().sniff()来确定dialect,但无法在初始化读取器后跳过标题行。目前代码导致字段名错误,期望结果是正确识别第二行作为字段名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想要csv.DictReader从文件中推断字段名称.

The docs说“如果省略fieldnames参数,csvfile的第一行中的值将被用作字段名称”,但在我的情况下,第一行包含一个标题,第二行包含名称.

我不能按照Python 3.2 skip a line in csv.DictReader应用下一个(阅读器),因为在初始化读取器时会发生字段名称分配(或者我做错了).

csvfile(从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]

我意识到简单地删除第一行并继续进行是有益的,但是我尽可能地尽可能靠近在原位读取数据,并尽量减少手动干预.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值