python 脚本中的逻辑错误,卡在缩进上
logical error in python script, stuck on indentation
这个脚本的目标很简单:
读入 .csv
文件
删除转义符 &
的实例并将其替换为 &
消除所有不满足以下条件的行:
验证行以确保它们的列值不多于或少于必要值
如果拥有 blank/null/whitespace/empty 列 - 删除该行
代码如下所示:
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
都缩进了。
这个脚本的目标很简单:
读入
.csv
文件删除转义符
&
的实例并将其替换为&
消除所有不满足以下条件的行:
验证行以确保它们的列值不多于或少于必要值
如果拥有 blank/null/whitespace/empty 列 - 删除该行
代码如下所示:
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
都缩进了。