0

我正在尝试使用分数比较两个文本之间的相似性。这是我的代码:

risk_list1_txt = []
scoreList = []
similarityDict = {}
theScore = 0
for text1 in risk_list1:
    similarityDict['FileName'] = text1
    theText1 = open(path1 + "\\" + text1).read().lower()
    for text2 in range(len(risk_list2)):
        theText2 = open(path2 + "\\" + risk_list2[text2]).read().lower()
        theScore = fuzz.token_set_ratio(theText1,theText2)
        similarityDict[risk_list2[text2]] = theScore
    outFile= open(fileDestDir,'w')
    outFile.write(str(theScore))
outFile.close()

问题是我的输出文件只给了我最后一次比较的分数,尽管我的 risk_list1 和 risk_list2 中有 3 个不同的文本文件。我无法让这个循环正常运行。

4

2 回答 2

6

您正在以写入模式而不是附加模式打开文件。代替

outFile= open(fileDestDir,'w')

outFile= open(fileDestDir,'a')

写入模式会截断文件的内容。附加模式附加到现有内容。此处文档中有关文件模式的更多信息

于 2014-05-22T20:51:05.453 回答
2

看起来这可能是一个缩进问题。

for text1 in risk_list1:
    # iterates through each text1
    # ...

    for text2 in range(len(risk_list2)):
        # iterates through each text2
        theScore = fuzz.token_set_ratio(theText1,theText2)
        # theScore gets set

    # we've iterated all the way through the text2's

    outFile= open(fileDestDir,'w')
    outFile.write(str(theScore))
    # open and write!

同样正如 shaktimaan 在他的回答中指出的那样,只要您打开带有'w'标志的文件,它就会使文件空白。用于'a'改为附加到文件。

于 2014-05-22T20:49:58.307 回答