我正在使用google maps api python客户端来获取地理编码数据。 api返回一个列表,该列表似乎是列表和字典的列表。这是一个结果的示例。
[[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
它持续了一段时间,然后一个新列表以address_components开始有点下降。每个结果的中间是'location':{'lat':xxx, 'lng':xxx},
'location': {'lat': 53.4083714, 'lng': -2.9915726},
'location_type': 'APPROXIMATE',
'viewport': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}}
我正在尝试获取'lat'
和lng
的值。
我尝试了几种解析方法。例如:
example = [[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
我尝试这样解析:
for x in example[i]:
for t in x:
print(t)
这将返回:
address_components
formatted_address
geometry
place_id
types
现在,我的lat
和lng
在geometry
中,就像这样:
'geometry': {'bounds': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}
但是,如果我尝试扩展for循环,如下所示:
for x in source_ll[i]:
for t in x:
for z in t:
print(z)
它输出:
a
d
d
r
e
s
s
_
c
o
m
p
o
n
e
n
t
s
f
o
r
m
a
等等。只是构成for t in x
返回的内容的字符串。
更新 我尝试过:
for x in example[i]:
for t in x:
for value in ['geometry']:
print(value)
但这又回来了
geometry
n次。
我只想获取53.4083714
和-2.9915726
。
我意识到我需要您的帮助!
答案 0 :(得分:1)
执行for c in some_string: print(c)
时,您一次只打印some_string
个字符,每个字符都一行一行。相反,您需要类似以下内容,其中几何条目的处理基于上面的示例。
if t == 'geometry':
bnd = t['bounds']
ne = bnd['northeast']
sw = bnd['southwest']
[print('ne', ne['lat'], ne['lng'], 'sw', sw['lat'], sw['lng']
答案 1 :(得分:0)
#for key1, value1 in target_query.items():
try:
for entities in value1:
if isinstance(entities, dict):
for key2, value2 in entities.items():
if isinstance(value2, dict):
for key3, value3 in value2.items():
if isinstance(value3, dict):
for key4, value4 in value3.items():
if isinstance(value4, dict):
x = value4.get('lat')
x = str(x)
y = value4.get('lng')
y = str(y)