в ответ на мой предыдущий вопрос .. Я упростил это ... Мне нужно обработать текстовый файл. Необходимо прочитать текстовый файл, определить определенное слово и обработать следующие несколько строк, затем продолжить чтение файла, определить какое-либо слово и обработать следующие несколько строк. Как мы можем сделать это Python.
Текстовый файл содержит информацию о сетевых устройствах, и информация имеет неструктурный формат, а формат информации отличается для каждого сетевого устройства. Мне нужно проверить, если обнаружение нескольких слов обрабатывает несколько строк под ним и после завершения сохранить его в файл JSON. Затем продолжите чтение файла и определите слова и обработайте несколько строк под ним ... например, ниже ... определите AAA и обработайте всю строку перед строкой "Done!" ... чем продолжите чтение файла и, если обнаружите поставщика AAA,BBB и CCC запускают обработку строки перед строкой «Done!». Процесс каждого поставщика будет отличаться, и процесс закончится строкой Done!
Например, ниже
vendor: AAA
ID:1
line3-------------
line4------------
line5------------
Done!
vendor:BBB
ID:5
line10-------------
line11-----------
line12------------
line13-------------
line14------------
line15------------
Done!
vendor:CCC
ID:10
line20-------------
line21------------
line22------------
line23-------------
Done!
vendor:BBB
ID:8
line28-------------
line29------------
line30------------
line31-------------
line32------------
line33------------
Done!
vendor: AAA
ID:4
line38-------------
line39------------
line40------------
Done!
Чем каждый процесс для каждого идентификатора будет сохранен в файле json
Это то, что я сделал до сих пор
with open("outputFile.txt", "r") as file:
for line in file:
if 'AAA' in line:
next(file)
data = [line.strip().split() for line in file]
print("This is AAA")
dict = {"scan":[]}
for x in data:
--extract line of data below ID--
with open('outputAAA.json', 'w') as f:
json.dump(dict, f)
elif 'BBB' in line:
next(file)
data = [line.strip().split() for line in file]
print("This is BBB")
dict = {"scan":[]}
for x in data:
--extract line of data below ID--
with open('outputBBB.json', 'w') as f:
json.dump(dict, f)
elif 'CCC' in line:
next(file)
data = [line.strip().split() for line in file]
print("This is CCC")
dict = {"scan":[]}
for x in data:
--extract line of data below ID--
with open('outputCCC.json', 'w') as f:
json.dump(dict, f)
else:
print("No vendor recognised")
continue
Проблема ...
- это создаст файл json AAA, BBB и CCC
- будет перезаписывать файл json
- Чтение файла как-то не будет продолжаться в последней точке. Что я имею в виду здесь ... после обнаружения, например, AAA ... обработайте строки с 3 по 5 и запишите файл json, а затем продолжите, начните снова читать последнюю строку и обнаружите AAA, BBB или CCC ... если обнаружите BBB ... обработайте следующие несколько строк до строки Done! ... чем продолжить чтение файла ... и если обнаружите AAA снова ... запустите процесс для AAA ... и так далее ...
- Итерация неправильно запустить, чтобы обнаружить и запустить процесс соответственно.
Спасибо за некоторые советы о том, как сделать это в Python ... спасибо