Поиск строк для копирования по нескольким условиям
При назначении переменной диапазона чисел и использовании её в поиске нужных строк для копирования никакая строка не выписывается.
Нужен был скрипт для обработки лога с выписыванием необходимых трёх строк. Возникла проблема в том, что для выбора этой строка необходимо, чтобы выполнялось условие наличия переменной плюс диапазон чисел. Первая переменная содержит в себе текст. И ещё вопрос: как можно сделать так, что если не выполняются условия третьей строки, то две выше не выписываются?
Пример первой переменой:
Золото:_ + диапазон чисел от 1000 до 10000
(фактически мне необходимо при выполнении условия одной строки вместе с ней выписать две выше)
import os
os.system('cls' if os.name == 'nt' else 'clear')
#select source file
a = open(input("Введите путь до файла обработки: "), "r")
#select destination file
b = open(input("Введите путь до файла записи: "), "w")
#переменная для проверки
copy = input("1:")
copy1 = input("2:")
copy2 = input("3:")
i = [1000, 10000]
x = range(1000, 10000)
p = copy2 + x
for line in a.readlines():
if copy in line:
b.write(line)
if copy1 in line:
b.write(line)
if in line:
b.write(line)
else:
print("no")
b.close
a.close
Ответы (1 шт):
если я правильно понял задачу у тебя в первой строке находится условие 1 во второй строке условие 2 в третьей строке условие 3 и нужно выписывать те три строки у которых совпадают все три условия?
last_3_lines = []
for line in a.readlines():
if len(last_3_lines ) == 3: # если уже есть 3 строки в найденном списке удаляем первую и начинаем новую проверку
last_3_lines.pop(0)
last_3_lines.append(line)
if all(len(last_3_lines) == 3, last_3_lines[0] == copy, last_3_lines[1] == copy1, last_3_lines[2] == copy2):
b.write(line)
last_3_lines = [] # это на случай, если все условия будут равны между собой и одна строка попадала в вывод только однажды
# не забыть вынести закрытие файлов на окончание программы, а не делать это в цикле
b.close
a.close