怎么用python读取csv文件、并且是读取行-什么是python方式读取CSV文件数据作为命名的行的行?...

1586010002-jmsa.png

What is the best way to take a data file that contains a header row and read this row into a named tuple so that the data rows can be accessed by header name?

I was attempting something like this:

import csv

from collections import namedtuple

with open('data_file.txt', mode="r") as infile:

reader = csv.reader(infile)

Data = namedtuple("Data", ", ".join(i for i in reader[0]))

next(reader)

for row in reader:

data = Data(*row)

The reader object is not subscriptable, so the above code throws a TypeError. What is the pythonic way to reader a file header into a namedtuple?

解决方案

Use:

Data = namedtuple("Data", next(reader))

and omit the line:

next(reader)

Combining this with an iterative version based on martineau's comment below, the example becomes:

import csv

from collections import namedtuple

try:

from itertools import imap

except ImportError: # Python 3

imap = map

with open("data_file.txt", mode="rb") as infile:

reader = csv.reader(infile)

Data = namedtuple("Data", next(reader)) # get names from column headers

for data in imap(Data._make, reader):

print(data.foo)

# ...further processing of a line...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值