我的代码是从csv文件读取url,对其内容进行GET,解析响应,然后将输出写入第二个csv。如果找到关键字,则需要它来输出某些数据;如果未找到,则应输出该数据的子集。换句话说,并非在所有情况下都会填充csv文件的所有列。
我的4行测试文件的构建方式是,在第一次迭代中缺少关键字,在第二次迭代中缺少关键字,在第三次迭代中缺少关键字,最后一次出现。下面的代码将找到关键字并在第一次时正确填充csv遍历,但在最后一个实例中找不到。我无法弄清楚if / elif循环出了什么问题:
counter = 0
for row in list_reader:
key_id = row['keyId']
ex_id = row['key']
get_response = key.get_item(row['keyId'])
#get_item is a method from the imported Client
length = (get_response['length'])
word = (get_response['transcript']['words'][0]['w'])
if word != "[keyword1]" and word != "[keyword2]":
print "other",counter
results_writer.writerow([key_id,ex_id,length])
elif word == "[keyword1]":
print word, counter
x = (get_response['value1'])
y = (get_response['value2'])
counter = counter + 1
results_writer.writerow([key_id,ex_id,length,x,y])
这样,终端的输出为:
other 0
[PCI] 0
other 1
other 1
如果运行正常,最后一个“其他”将是另一个“ [PCI]”。它将第一次相应地填充csv文件,但此后它将填充,就好像该关键字不再出现一样。
如何修复循环,以便在第一次之后成功迭代以找到关键字?
答案 0 :(得分:0)
(代表问题作者发布)。
我发现了问题。碰巧[PCI]是第二个实例中的第一个单词。我的单词变量只会找到第一个单词。因此,在另一种情况下,由于它不是第一个单词,因此它不会触发。