我遇到了一个问题,我无法找到一个干净的解决方案。我正在读csv文件(每行约4000行,最多约2000个文件),其中一些文件中随机包含一个空字节(它们首先不应该存在)。他们在自己的行上,我正试图找到一种方法来跳过它们。我觉得最干净的方法是将for循环放在try中,除非它遇到NULL字节,它将跳转到for循环的下一次迭代。我的问题是,如果for循环失败,continue
会移动到循环的下一次迭代吗?我假设它不会,但我不知道如何轻松地测试它,我无法想到另一种方法。
这里有一些伪代码
reader = csv.reader(open('file'))
while 1:
try:
for row in reader:
#do stuff with row
break
except:
continue
答案 0 :(得分:0)
如果null字符在它自己的行上,你应该能够在列表理解中跳过它。这会搜索无,但可以轻松调整以搜索“”或“空”
csv_as_list = [row for row in csv_file if row is not "\0"]
for row in reader:
try:
# do stuff with row
except:
continue
答案 1 :(得分:0)
如果您想更轻松地测试出错的地方,则需要隔离有问题的行。尝试计算直线,直到达到异常:
reader = csv.reader(open('file'))
parsed_lines = 0
try:
for row in reader:
#do stuff with row
parsed_lines += 1
except:
print("I had an error on line " + str(parsed_lines))
当您可以轻松测试出错时,您可能会更容易找到解决方案。