按照我的上一个问题。.我简化了它...我需要处理一个文本文件。需要读取文本文件,检测特定单词并处理接下来的几行,而不是继续读取文件,检测某些单词并处理接下来的几行。我们如何做到这一点是python。
文本文件由网络设备的信息组成,该信息是非结构格式,并且每个网络设备的信息格式都不同。我需要检查是否检测到一些单词处理它下面的几行,完成后将其保存到json文件中。比继续读取文件并检测单词并处理其下面的几行...例如,在下面..检测AAA并处理“完成!”行之前的所有行...比继续读取文件并检测到供应商AAA, BBB和CCC运行处理“完成!”行之前的行。每个供应商的过程将有所不同,并且过程将以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!
每个ID的每个进程都将保存在一个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',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',f)
else:
print("No vendor recognised")
continue
问题...
- 它将创建AAA,BBB和CCC的json文件
- 它将覆盖json文件
- 以某种方式无法最后读取文件。我的意思是...检测到AAA之后...处理第3至5行并写入json文件,然后继续开始再次读取最后一行并检测AAA,BBB或CCC ...如果检测到BBB ...处理接下来的几行,直到Done行!...然后继续读取文件...如果再次检测到AAA ...,请为AAA运行该过程...依此类推...
- 未正确运行迭代以检测并相应地运行该进程。
感谢一些关于如何在python中执行操作的建议...谢谢