2013-11-03 57 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