让csv.reader告诉它何时在最后一行
显然,某些csv输出实现在某处为null时会在文件的最后一行的右边截断字段分隔符,并且仅从文件的最后一行截断。
输入CSV示例,字段“ c”和“ d”为可空:
a|b|c|d1|2||
1|2|3|4
3|4||
2|3
在下面的脚本中,如何判断自己是否在最后一行,以便知道如何正确处理?
import csvreader = 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