在Python cs中跳过多行

2024-04-27 00:08:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在连接到一个API以获取一些数据。输出是一个包含多行标题和传统单行标题的报表。

示例:

1. Document Name: Test
2. Document Date: 8/7/2015
3. Document ID: 3804804
4. Document Author: Joe Blow
5.
6. Date, ID, Name, Age, Sex, Result
7. 8/7/2015, 2808380, Sara Jenkings, 33, F, 208.20

在这个例子中,我想跳过第1-5行,把第6行写为标题行,之后的所有行写为普通行。

现在,我知道如何使用next(reader, None)跳过一行,但是如果我知道要跳过的行数将与示例中的5行一致,则如何跳过多行?

我通常会使用一个数据库来跳过行,但我想看看是否可以让Python在不让数据库做更多工作的情况下正确地保存数据。


Tags: 数据nametestapiid数据库标题示例
3条回答

可以使用itertools.islice,将要开始写入的行作为第二个参数传递,因此对于基于0的行6,可以使用5如果stop为None,则迭代将继续,直到迭代器耗尽

import  csv

from itertools import islice

with open("in.csv") as f, open("out.csv","w") as out:
    r = csv.reader(islice(f, start=5,stop=None))
    wr = csv.writer(out)
    wr.writerows(r)

如果您保持以下行不变,则不一定需要csv模块:

with open("in.csv") as f, open("out.csv","w") as out:
    r = islice(f, 5 ,None)
    out.writelines(r)

使用列表理解跳过5个标题行:

import csv

nheaderlines = 5

with open(path + file) as csvfile:
    reader = csv.DictReader(csvfile)

    [next(reader, None) for item in range(nheaderlines)]

    for row in reader:
        print(row)

您可以将计数器和if语句添加到for循环。

count = 0
for line in opened_file:
    if count < 5:
        count += 1
        continue
    #Parse lines

相关问题 更多 >