Python 对于循环,请尝试跳过空字节

Python 对于循环,请尝试跳过空字节,python,csv,null,try-except,Python,Csv,Null,Try Except,我有一个问题,我也找不到一个干净的解决办法。我正在读取csv文件(每个文件约4000行,最多2000行),其中一些文件中随机包含一个空字节(它们本来就不应该存在)。他们是在他们自己的一排,我正试图找到一种方法跳过他们。我觉得最干净的方法是将for循环放入一个try,但当它碰到空字节时,它将跳到for循环的下一个迭代。我的问题是如果for循环失败,是否会继续移动到循环的下一个迭代?我想不会,但我不知道如何轻松地测试它,我想不出其他方法来做到这一点 这里有一些用于此的伪代码 reader = csv

我有一个问题,我也找不到一个干净的解决办法。我正在读取csv文件(每个文件约4000行,最多2000行),其中一些文件中随机包含一个空字节(它们本来就不应该存在)。他们是在他们自己的一排,我正试图找到一种方法跳过他们。我觉得最干净的方法是将for循环放入一个try,但当它碰到空字节时,它将跳到for循环的下一个迭代。我的问题是如果for循环失败,
是否会继续
移动到循环的下一个迭代?我想不会,但我不知道如何轻松地测试它,我想不出其他方法来做到这一点

这里有一些用于此的伪代码

reader = csv.reader(open('file'))
while 1:
    try:
        for row in reader:
            #do stuff with row
        break
    except:
        continue

如果空字符在它自己的行上,您应该能够在列表中跳过它。此选项不搜索任何内容,但可以轻松调整以搜索“”或“Null”


如果空字符在它自己的行上,您应该能够在列表中跳过它。此选项不搜索任何内容,但可以轻松调整以搜索“”或“Null”


如果您想更容易地测试错误,则需要隔离有问题的线路。尝试计数行,直到达到异常:

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

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

如果您想更轻松地测试错误,您需要隔离有问题的线路。尝试计数行,直到达到异常:

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


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

您可以使用一个小数据集进行测试,看看行为是否符合您的预期?也许为此设置一个单元测试,以查看您的方法在不同输入下的行为如何?@idjaw它会继续for循环还是while循环?如果您试图从文件中删除空字节,为什么要使用csv?为什么不干脆做
infle=open(“input.csv”);outfile=open(“output.csv”,“w”);outfile.write(infle.read().replace(“\0”,”)
?@Kevin这并不是我想要做的,但我想我可以修改它来工作。我会让您知道它是否有效为什么要将for循环放在try-except中,而不是将try-except放在for循环中?也许您可以使用一个小数据集进行测试,看看其行为是否符合预期?也许为此设置一个单元测试,以查看您的方法在不同输入下的行为如何?@idjaw它会继续for循环还是while循环?如果您试图从文件中删除空字节,为什么要使用csv?为什么不干脆做
infle=open(“input.csv”);outfile=open(“output.csv”,“w”);outfile.write(infle.read().replace(“\0”,”)
?@Kevin这并不是我想要做的,但我想我可以修改它来工作。我会让你知道它是否有效。你为什么要尝试使用for循环,除了,除了for循环之外,没有其他尝试?我认为None和NULL字节是不同的。我真的不想在整个文件上循环两次,这是我使用此解决方案必须做的事情。根据您需要做的事情,您可以将逻辑包括在列表理解中,创建一个部分,或者只使用常规for循环。而且,如果遇到异常,它看起来不会对任何内容进行评估。我调整了我的答案,使之与您的答案一致。我认为无字节和空字节是不同的事情。我真的不想在整个文件上循环两次,这是我使用此解决方案必须做的事情。根据您需要做的事情,您可以将逻辑包括在列表理解中,创建一个部分,或者只使用常规for循环。而且,如果遇到异常,它看起来不会对任何内容进行评估。我调整了我的答案,使之与你的答案一致。我知道问题在哪里,我只是不确定如何处理。也许给我们一些有问题的句子会很好,这样我们就可以完全帮助。我知道问题在哪里,我只是不确定如何处理。也许给我们一些有问题的句子会很好,所以我们可以全力帮助。