如果我使用itertool中的islice从第5行开始,如何使用DictReader?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果我使用itertool中的islice从第5行开始,如何使用DictReader?相关的知识,希望对你有一定的参考价值。

我有一个CSV文件,其字段名从第5行开始。

例如,第5行:Name,Age,Gender,Height第6行,依此类推:Steve,31,M,190

with open('AGM.csv', 'r') as f2:
    csv_reader = csv.reader(f2)

    for row in islice(csv_reader, 5, None):
        csv_DicReader = csv.DictReader(row)
        for lines in csv_DicReader:
            print(lines)

输出是这样的:

OrderedDict([('Name', 'Age')])

OrderedDict([('Name', 'Gender')])

OrderedDict([('Name', 'Height')])

OrderedDict([('Steve', '31')])

OrderedDict([('Steve', 'M')])

OrderedDict([('Steve', '190')])

为什么会这样?

答案

我想这就是您想要做的。

with open('AGM.csv', 'r') as f2:
    f = list(islice(f2, 4, None))
    csv_DicReader = csv.DictReader(f)

    for lines in csv_DicReader:
        print(lines)
另一答案

IIUC,使用:

import csv

with open('AGM.csv', 'r') as f2:
    for _ in range(4):
        next(f2) # skip first four lines

    # instantiate a dictreader after skipping first four lines
    reader = csv.DictReader(f2)
    for line in reader: # start reading from line 5
        print(line)

或使用islice

with open('AGM.csv', 'r') as f2:
    reader = csv.DictReader(islice(f2, 4, None))
    for line in reader:
        print(line)

此打印:

{'Name': 'Steve', 'Age': '31', 'Gender': 'M', 'Height': '190'}
 ...
 ...

以上是关于如果我使用itertool中的islice从第5行开始,如何使用DictReader?的主要内容,如果未能解决你的问题,请参考以下文章

Python从第二行到第十五行读取文本文件[关闭]

itertools 的 islice(count()) vs range()

与 functools.partial 一起使用时,itertools.islice 会引发 ValueError

迭代器

Python标准库--itertools模块

Python:islice 的性能问题