python 脚本中的逻辑错误,卡在缩进上

logical error in python script, stuck on indentation

这个脚本的目标很简单:

代码如下所示:

import csv

num_headers = 9
starts = 1

def url_escaper(data):
  for line in data:
    yield line.replace('&','&')

with open("adzuna_input.csv", 'r') as file_in, open("adzuna_output.csv", 'w') as file_out:
    csv_in = csv.reader(url_escaper(file_in))
    csv_out = csv.writer(file_out)

    for i, row in enumerate(csv_in, starts):

        counter = 1
        if len(row) == num_headers:
            for element in row:
                if element.strip():
                    counter += 1
            if counter == num_headers:
                    csv_out.writerow(row)


        else:
            print "line %d is malformed" % i

早些时候,我有它的工作,但最后一个条件,即 if possessed on a blank/null/whitespace/empty column- eliminate that row 给我带来了麻烦,我没有知道该怎么做。

我的解决方案是

    for i, row in enumerate(csv_in, starts):

        counter = 1
        if len(row) == num_headers:
            for element in row:
                if element.strip():
                    counter += 1

计算行数,查看值,尝试 strip 它们作为访问此字段是否包含一些有用信息的方式,即其中的 string/int/some 文本。

但是这不起作用。

我收到的确切错误消息是关于 csv_out.writerow(row) 的缩进,但我怀疑这只是一个借口。

确切消息

File validator.py, 
line 23 csv_out.writerow(row) 
               ^
IndentationError: expected an indented block

我想知道为什么上面的程序没有执行。

您实际上需要正确格式化您的代码:

        for element in row:
            if element.strip():
                counter += 1
        if counter == num_headers:
                csv_out.writerow(row)

csv_out.writerow行缩进了8个空格,所以无论是if is underindented还是csv_out.writerow都缩进了。