Я пытаюсь найти самый быстрый способ поиска строк в файле.Прежде всего, у меня нет только одной строки для поиска.У меня есть список 1900 строк, чтобы найти в файле, который составляет 150 МБ.Таким образом, в основном я открываю файл, повторяя цикл 1900 раз, чтобы найти все вхождения этой строки в этом файле.Вот некоторые атрибуты моего поиска.
A) Размер файла для поиска составляет 150 МБ - это текстовый файл.Б) Мне нужно найти все вхождения 1900 строк в файле.Значит, я зацикливаю 1900 раз весь файл для поиска всех вхождений.C) Это не простой поиск, я должен использовать регулярное выражение для поиска строки.D) В некоторых случаях мне нужна строка выше и строка ниже того места, где я нашел строку поиска.Поэтому мне нужно использовать file.readlines (), а не file.read (). E) В некоторых случаях я также должен заменить искомую строку новой строкой.
Сначала я пытаюсь найти лучший способ поискав файле.Мой код занимает слишком много времени.Я не уверен, что это лучший способ сделать это.Вот мой код.
#searchstrings is list of 1900 strings
file = open("mytextfile.txt", "r")
for line in file:
for i in range(len(searchstrings)):
if searchstrings[i] in line:
print(line)
file.close()
Этот код выполняет свою работу, но он очень медленный.Также это не дает мне возможности выбрать строку выше или ниже, где находится строка поиска.
Другой код, который я использую для замены строки, как показано ниже.Этот код также очень медленный.Здесь я использую регулярное выражение.
file = open("mytextfile.txt", "r")
file_data = file.read()
#searchstrings is list of 1900 strings
#replacestrings is list of 1900 strings that needs to be replaced
for i in range(len(searchstrings)):
src_str = re.compile(searchstrings[i], re.IGNORECASE)
file_data = src_str.sub(replacestrings[i], file_data)
file.close()
Я знаю, что производительность кода также зависит от вычислительной мощности, но я просто хочу знать, как лучше всего написать этот код, который будет работать с оптимальной скоростью для данного hw.Также я хотел бы знать, как рассчитать время выполнения программы.
Спасибо заранее