Посчитайте общие слова

#python

Вопрос:

У меня есть два файла .txt, и я должен сравнить их и просто посчитать общие слова.То, что я должен получить, — это просто общее количество общих слов в 2 разных файлах. Как я могу это сделать? Вы не могли бы мне помочь? Это код, который я попробовал, но мне нужно только общее количество, например «Я нашел 125 случаев».

Комментарии:

1. вы что-нибудь пробовали, а затем поделитесь кодом

2. Почему бы вам не использовать простой цикл for и не проверить все значения где dct[i] > 0 ? Это решение, если вы хотите внести минимальные изменения в свой код.

Ответ №1:

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

 sum(v != 0 for v in dct.values())
 

Комментарии:

1. @Connery67 как именно?

Ответ №2:

Если бы я правильно понял, я бы создал по одному набору для каждого файла со словами, но я бы также преобразовал все в меньшее, чтобы быть уверенным, что у меня будут «правильные» совпадения. Затем я бы создал пересечение этих множеств и просто получил длину.

 file1_words = set()    
file2_words = set()

file1 = open("text1.txt")
file2 = open("verbs.txt")

for word in file1.read().strip().split():
    file1_words.add(word.lower())

for word in file2.read().strip().split():
    file2_words.add(word.lower())

print(file1_words)
print(file2_words)

common_words = file1_words.intersection(file2_words)

print(len(common_words))
 

Основываясь на вашем объяснении, вы хотите суммировать значения созданного вами словаря. Вы можете сделать это просто,:

print(sum(dct.values()))

Комментарии:

1. Не уверен, что вы имеете в виду под числовым подсчетом

2. То есть вы имеете в виду общую сумму, в которой каждое из распространенных слов кажется правильным? Например, если hello появляется 2 раза, а apple 3, то вы должны получить 5, верно?

3. Затем, основываясь на ответе Береала, вы сможете использовать подход с суммой значений. Я отредактировал

Ответ №3:

Это учитывает все случаи употребления общих слов.

Он использует Counter см. https://docs.python.org/fr/3/library/collections.html#collections.Счетчик

 import re
from collections import Counter

with open('text1.txt', 'r') as f:
    words1 = re.findall(r'w ', f.read().lower())
    
with open('verbs.txt', 'r') as f:
    words2 = re.findall(r'w ', f.read().lower())
    
counter1 = Counter(words1)
counter2 = Counter(words2)

common = set(counter1.keys()).intersection(counter2.keys())

sum([counter1[e]   counter2[e] for e in common])