Python从urllib中解析字符串值

0 投票
1 回答
577 浏览
提问于 2025-04-17 16:06

我正在尝试从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 countryprint 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']

撰写回答