【发布时间】:2019-11-07 12:24:15
【问题描述】:
在我之前的问题之后..我简化了它...我需要处理一个文本文件。需要读取文本文件,检测特定单词并处理接下来的几行,而不是继续读取文件,检测一些单词并处理接下来的几行。我们怎么能做到这一点是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', '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
问题...
- 它将创建 AAA、BBB 和 CCC 的 json 文件
- 会覆盖json文件
- 读取文件不知何故无法在最后一点继续。我的意思是......在检测到例如AAA之后......处理第3到第5行并写入json文件,然后继续开始再次读取最后一行并检测AAA,BBB或CCC......如果检测到BBB......处理接下来的几行直到行完成!...然后继续读取文件...如果再次检测到 AAA...运行 AAA 的进程...等等...
- 迭代未正确运行,无法相应地检测和运行进程。
感谢有关如何在 python 中执行此操作的一些建议...谢谢
【问题讨论】:
标签: python json dictionary text find