Python 3.x Python-从txt文件获取值
我试图从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
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