Я хочу использовать re.findall для определения того, сколько раз слово отображается в файле .txt. Также мне это нужно, если я пытаюсь подсчитать, сколько раз слово Привет появляется в тексте Приветoo, чтобы быть обнаруженным.
Вот весь код, который у меня есть:
# -*- coding: utf-8 -*-
import re
total = 0
with open('text.txt') as f:
for line in f:
total = re.findall('Hello')
print total






Создание файла:
echo "Hellooo there.
Hello hello Hello" > file.txt
И найдем все вхождения "Hello":
In [1]: import re
In [2]: with open('file.txt') as f:
...: all_hellos = re.findall('Hello', f.read())
...:
In [3]: print(len(all_hellos))
3
Вышеупомянутое будет искать только Hello, но не hello. И это будет кэшировать весь файл в памяти, так что это будет нормально, если вы не используете большие файлы.
Помните, что re.findall() вернет список всех найденных вхождений, а не их количество.
Почему бы просто не использовать str.count, если вы не используете re.finditer для повышения эффективности памяти?
@timgeb str.count выглядит неплохо. Я никогда не знал об этом. Я не знал, хотел ли пользователь специально использовать re.findall.
Зачем вообще использовать регулярное выражение?
Метод count() будет делать то же самое:
with open('text.txt') as f:
total = f.read()
print total.count('Hello')
И не требует импорта модулей, так как он встроен.
При использовании регулярного выражения также не рекомендуется использовать r в качестве префикса необработанной строки. total = re.findall(r'Hello')
Похоже, вы забыли задать вопрос в своем вопросе. Пожалуйста, красный Как спросить и предоставьте минимальный воспроизводимый пример.