让csv.reader告诉它何时在最后一行

显然,某些csv输出实现在某处为null时会在文件的最后一行的右边截断字段分隔符,并且仅从文件的最后一行截断。

输入CSV示例,字段“ c”和“ d”为可空:

a|b|c|d

1|2||

1|2|3|4

3|4||

2|3

在下面的脚本中,如何判断自己是否在最后一行,以便知道如何正确处理?

import csv

reader = csv.reader(open('somefile.csv'), delimiter='|', quotechar=None)

header = reader.next()

for line_num, row in enumerate(reader):

assert len(row) == len(header)

....

回答:

基本上,您只知道用完 之后 就用完了。因此,您可以包装reader迭代器,例如,如下所示:

def isLast(itr):

old = itr.next()

for new in itr:

yield False, old

old = new

yield True, old

并将您的代码更改为:

for line_num, (is_last, row) in enumerate(isLast(reader)):

if not is_last: assert len(row) == len(header)

等等

以上是 让csv.reader告诉它何时在最后一行 的全部内容, 来源链接: utcz.com/qa/413755.html

回到顶部