为什么我的if elif循环无法一致地在数据中找到字符串

时间:2019-01-03 00:16:57

标签: python python-2.7

我的代码是从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文件,但此后它将填充,就好像该关键字不再出现一样。

如何修复循环,以便在第一次之后成功迭代以找到关键字?

1 个答案:

答案 0 :(得分:0)

(代表问题作者发布)

我发现了问题。碰巧[PCI]是第二个实例中的第一个单词。我的单词变量只会找到第一个单词。因此,在另一种情况下,由于它不是第一个单词,因此它不会触发。