поиск слов в строке файла

def word_statistics(file_name, words):
    # Подготавливаем набор искомых слов
    words_set = set(words)
   
    with open(file_name, 'r', encoding='utf-8') as file:
        for line_number, line in enumerate(file, start=1):
            line_words = line.split()
            found_words = [word for word in line_words if word in words_set]
            
            if found_words:
                # Форматированный вывод
                print(line_number)
                print(' '.join(found_words))
                print(line.strip())

# Пример использования
input_words = input("слова для поиска: ").split()
word_statistics('текст.txt', input_words)





Как работает этот скрипт:

Функция word_statistics принимает имя файла и список слов для поиска.
С помощью open() файл открывается для чтения с указанием кодировки UTF-8. Это нужно для корректного чтения текста на русском языке.
С использованием enumerate проходим по строкам файла и получаем номер строки.
Каждая строка разбивается на слова, и с помощью спискового включения проверяется, какие из искомых слов присутствуют в строке.
Если искомые слова найдены, выводится номер строки, сами найденные слова и полное содержимое строки.




файл текст.txt =>
это просто набор слов в строке
нам нужен такой код из слов
это не так всё было и сложно сделать
всё это есть в одной строке
нам это нужно было понять сразу
ты скажи мне что нам нужно для этого ещё
здесь слишком много хороших слов
не будем думать что это всё что нам было нужно
честно говоря не знаю что это такое на самом деле есть




вывод:


слова для поиска: что это такое есть

1
это
это просто набор слов в строке
3
это
это не так всё было и сложно сделать
4
это есть
всё это есть в одной строке
5
это
нам это нужно было понять сразу
6
что
ты скажи мне что нам нужно для этого ещё
8
что это что
не будем думать что это всё что нам было нужно
9
что это такое есть
честно говоря не знаю что это такое на самом деле есть







вот ещё один вариант того же алгоритма:


#код ------------------------>


query = input('Введите слова: ')

# Разбиваем строку на слова и удаляем повторяющиеся слова
words = list(set(query.lower().split()))

# Открываем файл и читаем его с помощью контекстного менеджера
filename = 'текст.txt'
with open(filename, 'r', encoding='utf-8') as f:

# Создаем словарь для хранения количества повторяющихся слов
    word_counts = {}

    # Читаем файл построчно
    for i, line in enumerate(f):
    # Разбиваем строку на слова и получаем список повторяющихся слов
        line_words = line.lower().split()
        matches = [word for word in words if word in line_words]

# Если список повторов слов не пуст, добавляем повторения в словарь и выводим данные о строке
        if len(matches) >= 1:
            for word in matches:
                count = line_words.count(word)
                if word in word_counts:
                word_counts[word] += count
                else:
                word_counts[word] = count
               
            msg = f'{i+1}\n{" ".join([word for word in line_words if word in matches])}\n{line.strip()}'
            print(msg)


Рецензии