显然,某些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迭代器,例如,如下所示:
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)
等等