Python从urllib中解析字符串值
我正在尝试从ipinfodb.com获取IP位置和其他信息,但遇到了困难。
我想把所有的值分开,变成新的字符串,这样我可以按照自己的想法来格式化。到目前为止我写的代码是:
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 country
、print city
,这样就能分别输出国家、城市等等。我试着在他们的网站上查找,有个类可以用,但那是不同版本的API,所以我不能用(他们的是v2,我的是v3)。有没有人知道怎么解决这个问题?
PS. 如果答案很明显或者我搞错了,抱歉,我刚学Python :s
1 个回答
1
你需要把 resp
这个文本用 ;
来分开:
out = resp.split(';')
现在 out
是一个值的列表,你可以用索引来访问不同的项目:
print 'Country: {}'.format(out[3])
另外,你可以在查询字符串中加上 format=json
,这样就能从那个API得到一个 JSON格式的响应:
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']