【问题标题】:How do I compare a record in a csv (txt) file to a record in another csv (txt) file and calculate a number based on their comparison?如何将 csv (txt) 文件中的记录与另一个 csv (txt) 文件中的记录进行比较,并根据它们的比较计算一个数字?
【发布时间】:2014-03-30 13:30:37
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

  • 你必须先展示尝试过的东西。
  • 对那里的布局感到抱歉。
  • cmets 部分中的代码不易阅读。相反,edit您的问题以添加相关详细信息!
  • @TheElderLatham 更好地编辑您的问题并在那里添加代码
  • 我得走了,所以我不能给你答案。但是,如果您正在读取 csv 文件,则可以将每一行读取为行字典,然后您可以轻松地操作每个键值对 - 键是列标题“def_1”,值就是答案。那么你可以很容易地操作每个项目看到这个page这是我学会如何做到这一点的地方

标签: python python-2.7 csv


【解决方案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=",")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2016-07-24
    • 2016-09-10
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多