我想编写一个迭代输出,每个版本都在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中的新行?我该怎么做才能实现这一目标?
提前致谢!
答案 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
值以检查空行问题。