Python 2.7.10 csv如何在新行中编写迭代输出的每个版本

时间:2015-07-28 09:36:59

标签: python excel csv dictionary

我想编写一个迭代输出,每个版本都在csv的新行中。我试过这个:

#matching questions
for ind1,key1 in enumerate(file1):
    for ind2,key2 in enumerate(file2):
        ques1 = file1[key1]
        ques2 = file2[key2]
        match_ratio = difflib.SequenceMatcher (None, ques1, ques2).ratio()
        n = csv.writer(open("output.csv", "wb"))
        n.writerow([key1, ques1, key2, ques2, match_ratio])

正如您所看到的,我正在尝试匹配来自不同字典的两个字符串,然后我想将每个字符串和值以及匹配率输出到csv文件中,以便我可以使用excel中的输出。但是,只有每个变量的最后版本才能获得输出,我不知道为什么。

为什么每次都没有将变量输出到csv中的新行?我该怎么做才能实现这一目标?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您的代码在每次迭代时重写数据,而是以追加模式打开文件。

答案 1 :(得分:0)

正如@ amal-ts所说,你应该使用追加模式打开文件。

在每个循环中打开文件都是个坏主意,所以你应该考虑使用with

with open("output.csv", "ab") as f:
    for ind1,key1 in enumerate(file1):
        for ind2,key2 in enumerate(file2):
            ques1 = file1[key1]
            ques2 = file2[key2]
            match_ratio = difflib.SequenceMatcher (None, ques1, ques2).ratio()
            n = csv.writer(f)
            n.writerow([key1, ques1, key2, ques2, match_ratio])

最后,您应该检查match_ratio值以检查空行问题。