【发布时间】:2017-01-27 18:24:42
【问题描述】:
我正在尝试编写一个函数,将文本文件放入一个列表中,然后遍历文件以找到准确和部分副本,以清除可能通过抄袭他们的工作而作弊的人。我首先使用我的班级名册并将 .txt 添加到他们的姓名中以查找他们的作业以及他们是否已完成作业。我有超过 500 份学生的论文要阅读。到目前为止,我编写的代码实际上是在 .txt 文件中逐字迭代,所以我得到了太多“被骗”的回报。请帮忙。
def Cheaters():
file = open("roster.txt", "r")
L = []
for i in file:
new = [i[:-1], ".txt"]
new2 = "".join(new)
if i not in L:
L.append(new2)
for j in L:
try:
file2 = open(j, "r")
for n in file2:
for m in file2:
if n == m:
print("Cheated")
except:
print("No work submitted")
【问题讨论】:
-
首先要定义什么是作弊。查找匹配的词或词对是一个糟糕的指标,因为这些在给定主题中可能很常见。您可能希望按句子分解每个文档并比较文档之间共享的句子数量。如果你想变得非常聪明,你可以实现一个编辑距离,比较从一个文档中的每个句子到另一个文档中的每个句子需要多少次替换。
-
谢谢。我想检查部分或全部抄袭。你能解释一下我如何逐行而不是逐字迭代吗?另外,“编辑距离”到底是什么意思?比如一系列可以编辑的元素?
-
我正在编写一些代码来帮助您。所有文档文件名都在 roster.txt 的列表中吗?
-
名册实际上只是名称,这就是为什么我编写代码来添加 .txt 以添加到名称中以便将文件放入列表中......非常感谢。
标签: python list file iteration