0

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

4

1 回答 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']
于 2013-02-16T16:11:18.827 回答