python csv读取器忽略blan

2024-05-16 05:17:26 发布

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

我正在使用pythons csv阅读器。我如何使用下面的代码来忽略空行。在

import csv
f1 = open ("ted.csv")
oldFile1 = csv.reader(f1, delimiter=',', quotechar='"')
oldList1 = list(oldFile1)
f2 = open ("ted2.csv")
newFile2 = csv.reader(f2, delimiter=',', quotechar='"')
newList2 = list(newFile2)

f1.close()
f2.close()

with open("ted.csv") as f1, open("ted2.csv") as f2, open('foo.csv', 'w') as out:
     r1, r2 = csv.reader(f1), csv.reader(f2)
     st = set((row[0], row[3]) for row in r1)
     wr = csv.writer(out)
     for row in (row for row in r2 if (row[0],row[3]) not in st):
           wr.writerow(row)

Tags: csvinforasopenlistreaderrow
2条回答

如果您的csv文件以一个空行开头,我认为您应该能够在创建csv读取器之前跳过该行并使用readline()

with open("ted.csv") as f1, open("ted2.csv") as f2, open('foo.csv', 'w') as out:
    f1.readline()
    f2.readline()
    r1, r2 = csv.reader(f1), csv.reader(f2)

如果你的空格总是在第一行,那么马吕斯的回答最简单。如果开头有n空格,或者只想跳过一些行,可以使用^{}。在

跳过前N行

假设您想跳过第一行4行(是否为空行):

from itertools import islice
with open('csv2.csv', 'r') as f1, open('out.csv', 'w') as out:
    filt_f1 = islice(f1, 4, None)
    r1 = csv.reader(filt_f1)
    wr = csv.writer(out)
    for line in r1:
        ...

整个空白行

如果文件中有空行,那么可以用^{}过滤掉。在

^{pr2}$

其中csv1.csv是:

time,name,location
12345,Jean,Montreal

12346,Peter,Chicago

1234589,Doug,Boston

和csv2.csv(注意:此处未显示,但csv2.csv在文件顶部有4个空行):

123457,Scott,San Diego

123458,Jen,Miami

123459,Robert,Sacramento

输出输出.csv没有空行贯穿:

time,name,location
12345,Jean,Montreal
12346,Peter,Chicago
1234589,Doug,Boston
123457,Scott,San Diego
123458,Jen,Miami
123459,Robert,Sacramento

相关问题 更多 >