Python 3.x Python-从txt文件获取值

Python 3.x Python-从txt文件获取值,python-3.x,Python 3.x,我试图从txt文件中获取一些值,其中的行具有特定的字符串。我的文本文件包含以下更多数据 2018-11-11 00:00:10 INFO ProtocolProcessor:417 - PUBLISH on server 80 from clientID <ClientId> on topic </data/AClientData> with QoS MOST_ONE 2018-11-11 00:00:10 INFO ProtocolProcessor:530 - Rec

我试图从txt文件中获取一些值,其中的行具有特定的字符串。我的文本文件包含以下更多数据

2018-11-11 00:00:10 INFO ProtocolProcessor:417 - PUBLISH on server 80 from clientID <ClientId> on topic </data/AClientData> with QoS MOST_ONE
2018-11-11 00:00:10 INFO ProtocolProcessor:530 - Received Msg:{
"id" : "A001",
"val" : 62.0,
"ts" : "2018-11-10 23:41:21"
}
2018-11-11 00:00:10 INFO ProtocolProcessor:587 - send publish message to <tcp://35.166.43.154:80> on topic </data/BClientData>
2018-11-11 00:00:11 INFO Consumer:39 - Received a message of type PUBLISH
2018-11-11 00:00:11 INFO Consumer:58 - String received before queue:{
"id" : "B001",
"val" : 89.0,
"ts" : "2018-11-10 23:42:21"
} 
已尝试的代码:

searchString = '/data/AClientData'
search = open("C:\\ReadLogUsingPython.txt","r")
for line in search.readlines():
    if searchString in line:
        #here need to take value of next line Received Msg:{ }
        #print each value
        valueDict ={"id" : "A001","val" : 62.0,"ts" : "2018-11-10 23:41:21"}
        print(valueDict['id'])
        print(valueDict['val'])
        print(valueDict['ts']) 

这是一种使用简单迭代的方法

Ex:

with open(filename) as infile:
    for line in infile:
        if "/data/AClientData" in line:
            next(infile)
            extractData = [next(infile).strip().replace('"', "") for i in range(3)]
            for i in extractData:
                print("{}={}".format(*i.split(" : ")))
id=A001,
val=62.0,
ts=2018-11-10 23:41:21
输出:

with open(filename) as infile:
    for line in infile:
        if "/data/AClientData" in line:
            next(infile)
            extractData = [next(infile).strip().replace('"', "") for i in range(3)]
            for i in extractData:
                print("{}={}".format(*i.split(" : ")))
id=A001,
val=62.0,
ts=2018-11-10 23:41:21

要执行类似的操作,我将逐个字符扫描
围栏,然后将内容与
{
}
围栏的JSON解析字符串相关联。比如说

results = {}
fp = open('file.txt', 'r'):

char = fp.read(1)
nameStart, nameEnd, jStart, jEnd = None
while char:
    If char == '<'
        nameStart = fp.seek()
    elif char == '>':
        nameEnd = fp.seek()
    elif char == '{':
        jStart = fp.seek()
    elif char == '}':
        jEnd = fp.seek()
        # read the string between each start/end pair, parse json, and stash in results
    char = fp.read(1)
results={}
fp=open('file.txt','r'):
char=fp.read(1)
nameStart,nameEnd,jStart,jEnd=None
而char:
如果char='':
nameEnd=fp.seek()
elif char=='{':
jStart=fp.seek()
elif char=='}':
jEnd=fp.seek()
#读取每个开始/结束对之间的字符串,解析json,并将结果隐藏
char=fp.read(1)
我是在电话上打的,所以请原谅我的错误。这是一个粗略的想法。

显示错误打印(“{}={}”.format(*i.split(“:”))索引器:元组索引超出范围
打印(i)
显示什么?或者可以显示
extractData