如何将csv(txt)文件中的记录与另一个csv(txt)文件中的记录进行比较,并根据它们的比较计算一个数字?

时间:2014-03-30 13:30:37

标签: python python-2.7 csv

我正在尝试使用Python将csv(txt)文件中的单词与另一个csv(txt)文件中的单词进行比较。然后我尝试根据它们的相似性计算得分。一个文件(Answer.txt)包含测试的答案。另一个(Test.txt)包含测试的定义和答案。问题是我对编码很新,而且两个文件都有不同的布局。例如,Answers.txt的布局如下:

dog,cat,sheep

Test.txt的布局如下:

definition_1,def_2,def_3
dog,cat,sheep

对于Answer.txt中的每一行,我试图将每个单词与Test.txt中的最后一行进行比较。我也试图根据匹配的单词计算得分。如果一个单词匹配,我希望获得2分。例如:

如果Answer.txt中的答案说:

dog,cat,sheep

Test.txt中的答案说:

dog,cat,sheep

...将计算得分为6分。但是,如果Answers.txt中的答案说:

dog cat,shep

...然后将获得4分,因为'sheep'与Test.csv不匹配。

我希望将这个“得分”添加到另一个名为“Score.txt”的文件的记录末尾。

对不起,不好意思。这简直就像我可以解释一样简单。你的帮助将受到大力赞赏!

添加了:

我不知道从哪里开始。但是,我编写了将用户输入存储在Answers.txt中的函数:

def ask_question(number, definition):
    """ Asks a question for definition number """
    print "Definition {}: {}".format(number, definition)
    return raw_input("Answer: ")

def sit_a_test():
    results = []
    with open("Test.txt", "rb") as f:
        for row in csv.reader(f):
            results.append(list(ask_question(no, def) for no, def in enumerate(row))))

    with open("Score.txt", "wb") as f:
        writer = csv.writer(f)
        writerow.writerows(results)

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的东西,使用numpy

import numpy as np

# Load the files:
answers = np.loadtxt(open("Answer.txt"), dtype='str', delimiter=",")
test = np.loadtxt(open("Text.txt"), dtype='str', delimiter=",")

# Compare
scores = 2 * np.sum(answers == test, axis=0)

# save
np.savetxt("Score.csv", scores, delimiter=",")