如何从包含API字典的列表中获取值



我能够从返回列表的API中获取结果,但从列表中获取值似乎很困难。

['[{"place_id":123018700,"licence":"Data', '©', 'OpenStreetMap', 'contributors,', 'ODbL', '1.0.', 'https://osm.org/copyright","osm_type":"way","osm_id":158053311,"boundingbox":["33.642992","33.6435452","-117.8422864","-117.8414719"],"lat":"33.64324045","lon":"-117.84185686276017","display_name":"Bren', 'Hall,', 'Ring', 'Mall,', 'University', 'of', 'California,', 'Irvine,', 'Irvine,', 'Orange', 'County,', 'California,', '92697,', 'United', 'States', 'of', 'America","class":"building","type":"yes","importance":0.511,"address":{"building":"Bren', 'Hall","road":"Ring', 'Mall","suburb":"University', 'of', 'California,', 'Irvine","city":"Irvine","county":"Orange', 'County","state":"California","postcode":"92697","country":"United', 'States', 'of', 'America","country_code":"us"},"svg":"M', '-117.8422864', '-33.6434792', 'L', '-117.8422046', '-33.6431755', '-117.8421809', '-33.6431799', '-117.8421303', '-33.642992', '-117.8415931', '-33.6430922', '-117.8415563', '-33.6431147', '-117.8414719', '-33.6431671', '-117.8415225', '-33.6433552', '-117.8418132', '-33.643301', '-117.8418253', '-33.643346', '-117.8418766', '-33.6433364', '-117.8419327', '-33.6435452', 'Z"}]']

这是API的输出,我需要能够从中取出一些信息;lat"lon";,以及";显示名称">

您确定已将API响应正确复制到您的问题中吗?

因为看起来你有这种格式化的响应(非常松散的伪代码(:

api_output: list(string(list(dict)))

我的建议是

  • 访问列表中的元素,在您的情况下,您只有一个元素,因此可以使用[0]对其进行索引
  • 使用ast.literal_eval解析包含列表的内部字符串,并从中访问其中的dict

但是,我问您是否正确复制了它,因为我尝试了上面的方法,但它不起作用,因为字符串的内部格式不正确(例如:"licence":"Data', '©',(注意到Data上缺少匹配的单引号。

如果这真的是输出,那么正如您所确定的,它可能相对棘手。您可以对所需的键执行regex搜索,并在${key}:之后搜索一组匹配的单引号/双引号尽管显然添加了感兴趣的密钥

最新更新