2013-11-03 58 views
1

我的代码的具体数据:指定字符串中的响应变量

#Importing the urllib tool to my program 
import urllib.request 

#Fetch data from URL 
response = urllib.request.urlopen('<URL>') 

#Store that response into the variable below 
taginfo = response.read() 

#Tag info result of search for SSI values 
taginforesult = taginfo 

#print taginfo 
print(taginfo) 

在Python Shell以上的结果是正确的,如下所示:

b'LOCATE00016331: tagid="00016331", taggroupid=LOCATE, tagtype=mantis04A, irlocator=null, motion=false, tamper=false, panic=false, lowbattery=false, locationzone="", gpsid="", lastgpsid="", lastgpsts=null, confidencebyrule={}\r\n(CarrierHQ_channel_A: reader=CarrierHQ, channel="A", ssi=-95)\r\n(CarrierHQ_channel_B: reader=CarrierHQ, channel="B", ssi=-99)\r\n\r\n\r\n' 

我想是知道的是:如何从上述响应中只选择SSI=-95SSI-99值,然后将它们插入SSI-ASSI-B变量?

我是否strip(),findall(),search(),...?

+2

您提到过哪些想法?结果是什么? – 2013-11-03 16:13:21

回答

1

这是一种奇怪的格式。但是,您可以轻松地将其剪掉以获得所需的零件。

ssia = str(taginfo).split("\\r\\n")[1] 
        .strip("()") 
        .split(",")[-1] 
        .strip() 
        .split("=")[1] 
assert ssia == '-95' 

ssib = str(taginfo).split("\\r\\n")[2] 
        .strip("()") 
        .split(",")[-1] 
        .strip() 
        .split("=")[1]  
assert ssib == '-99' 
+0

工作得很好,谢谢:D。 – Colubris

+0

如果'ssia'或'ssib'值小于-100(即:-110),你会知道如何让程序运行另一个URL吗? – Colubris

+0

运行另一个URL?如果'int(ssia)<100或int(ssib)<100',你想'urllib.request.urlopen'另一个URL吗? – 2013-11-04 12:43:23