for try in try除了跳过NULL字节

时间:2016-02-29 15:38:18

标签: python csv null try-except

我遇到了一个问题,我无法找到一个干净的解决方案。我正在读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

2 个答案:

答案 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))

当您可以轻松测试出错时,您可能会更容易找到解决方案。