2013-04-22 2 views
0

Мне поручено написать программу, которая ловит плагиатов. Учитывая папку с файлами, как бы я прокручивал их по-файл, создавая список всех шестисловных фраз в каждом файле. Примером этого являетсяЧтение через папку с файлами?

Настало время для всех хороших людей прийти на помощь своей стране.

Содержит 6-словосочетаний: Сейчас настало время для всех, времени для все хорошего, времени для всех хороших людей, времени для всех хороших людей к, ... и так далее ,

ExampleFile=F.read('File') 
index1=0 
index2=5 
List1=[] 
while True: 
    index1+=1 
    index2+=1 
    List1+= Examplefile[index1:index2] 

Является ли это до сих пор, чтобы создать списки из 6 словосочетаний. Как же я мог бы сделать это для каждого файла, а затем сравнить эти результаты, чтобы увидеть, есть ли в двух файлах более 200 одинаковых фраз? Я сделал очень мало, используя файлы на Python, настолько немые, насколько возможно. Благодаря!

ответ

3

Поскольку это домашнее задание, я думаю, что несколько ссылок помогут вам больше, чем полный код.

Посмотрите на os.listdir, в котором перечислены все файлы в папке и os.walk, которые перемещаются по дереву каталогов.

Затем вы можете составить список, в котором каждый элемент является контейнером фраз. Я предлагаю использовать set фраз для каждого файла и список таких наборов, или, может быть, set из frozenset.

Затем вы можете взять все парные комбинации этих множеств с itertools.combinations и вычислить intersection для каждой пары. Если размер любого пересечения выше порога, вы нашли плагиата.


Комментарий к текущему коду: есть именование, что имена переменных должны начинаться с прописными буквами, и капитализированные имена, используемыми для классов.

Смежные вопросы