小编典典

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

python

显然,某些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)
    ....

阅读 733

收藏
2021-01-20

共1个答案

小编典典

基本上,您只知道用完 之后 就用完了。因此,您可以包装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)

等等

2021-01-20