Я пытаюсь использовать оператор регулярных выражений в python для поиска текстового файла и подсчета количества раз, когда пользовательское слово появляется. Однако, когда я запускаю свой код, вместо того, чтобы получать сумму количества раз, когда это уникальное слово появляется в файле, я получаю счетчик для числовых строк в этом файле, содержащих это слово.Python regular выражение search text file count substring
Пример: слово «яблоко» существует 56 раз в текстовом файле. Появляется в 20 из 63 строк текста. Когда я запускаю свой код, консоль печатает «20» для подсчета «яблока» вместо правильного «56».
Я думал, используя метод re.findall(), он исправит это, но это не так.
import re
#If user selects Regular Expressions as their search method
elif user_search_method == "2":
print "\n>>> You selected the Regular Expressions search method"
f = open(filename, 'r')
words = sum(1 for w in f if re.findall(user_search_value, w, re.M|re.I))
f.close()
print("Your search value of '%s' appears %s times in this file" % (user_search_value, words))
Это именно то, что вы просите для. '1 для w в f' <здесь' w' - это строка, которую вы фильтруете на основе 'if re.findall (...)'. Если вы хотите подсчитать количество найденных совпадений, суммируйте по 'len (re.findall (...))'. – jonrsharpe