#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])