Для поиска всех вхождений заданной строки в файле можно использовать методы из стандартной библиотеки Python. Один из эффективных способов - это использовать модуль re для работы с регулярными выражениями. Вам также понадобится модуль os для работы с файловой системой. Вот пример кода:
import re
import os
def find_occurrences_in_file(file_path, search_string):
occurrences = []
pattern = search_string.replace('N', '[ATGC]').replace('R', '[AG]')
regex = re.compile(pattern)
with open(file_path, 'r') as file:
for line_number, line in enumerate(file, start=1):
matches = regex.finditer(line)
for match in matches:
occurrences.append((line_number, match.start(), match.group()))
return occurrences
# Пример использования:
file_path = 'путь_к_файлу.txt'
search_string = 'NNNNNNATRR'
result = find_occurrences_in_file(file_path, search_string)
for line_number, position, match in result:
print(f"Вхождение найдено в строке {line_number}, позиция {position}: {match}")
В этом коде я сначала преобразую искомую строку search_string
в регулярное выражение, заменяя N
на [ATGC]
и R
на [AG]
. Затем читаею файл построчно и использую finditer
для поиска всех вхождений регулярного выражения в каждой строке. Для каждого вхождения сохраняю номер строки, позицию и найденную подстроку. В результате получаю список всех вхождений.