2013-02-16 94 views
0

我試圖從ipinfodb.com獲取IP位置和其他東西,但是我卡住了。python從字符串urllib中分割值

我想將所有的值分成新的字符串,我可以格式化我以後的想法。我寫了這麼遠是:

resp = urllib2.urlopen('http://api.ipinfodb.com/v3/ip-city/?key=mykey&ip=someip').read() 
    out = resp.replace(";", " ") 
    print out 

之前,我更換了串入新的產量爲:

OK;;someip;somecountry;somecountrycode;somecity;somecity;-;42.1975;23.3342;+05:00 

所以我把它只顯示

OK someip somecountry somecountrycode somecity somecity - 42.1975;23.3342 +05:00 

但問題是這很愚蠢,因爲我想用它們不是在一個字符串中,但更多,因爲我現在做的是print out,它輸出這個,我想改變它像print countryprint city它輸出的國家,城市等。我試圖檢查他們的網站,有一些類,但它是針對不同的API版本,所以我不能使用它(V2,我的V3)。有沒有人有一個想法如何做到這一點?

PS。很抱歉,如果答案是顯而易見的,或者說我錯了,我是新的Python:■

回答

1

您需要通過;resp文本拆分:

out = resp.split(';') 

現在out是值的列表,而不是,使用索引來訪問各種內容:

print 'Country: {}'.format(out[3]) 

另外,添加format=json到您的查詢字符串,並從該API接收JSON response

import json 

resp = urllib2.urlopen('http://api.ipinfodb.com/v3/ip-city/?format=json&key=mykey&ip=someip') 
data = json.load(resp) 

print data['countryName'] 
+0

哦是的,我做了resp.split的,但從來不知道我可以格式化他們哈哈。謝謝!編輯:是的,這是我說的lib,它是針對api版本2的。 – maikati 2013-02-16 16:14:17

+0

@maikati:啊,然後刪除庫鏈接。無論如何,這實際上只是一個薄薄的包裝。 – 2013-02-16 16:17:17