Python: разделение частей URL для использования в функции - PullRequest
0 голосов
/ 27 ноября 2018

Я понимаю, что на SO уже есть много ответов, касающихся разделенных Python URL.НО, я хочу разделить URL и затем использовать его в функции.

Я использую запрос curl в python:

r = requests.get('http://www.datasciencetoolkit.org/twofishes?query=New%York')
r.json()

, который обеспечивает следующее:

{'interpretations': [{'what': '',
  'where': 'new york',
  'feature': {'cc': 'US',
    'geometry': {'center': {'lat': 40.742185, 'lng': -73.992602},
     ......
     # (lots more, but not needed here)

Я хочу иметь возможность звонить в любой город / локацию, и я хочу выделить lat и lng.Например, я хочу вызвать функцию, в которую я могу ввести любой город, и он отвечает широтой и долготой.Вроде как этот вопрос (который использует R).

Это моя попытка:

import requests

def lat_long(city):
    geocode_result = requests.get('http://www.datasciencetoolkit.org/twofishes?query= "city"')

Как мне разобрать ее, чтобы я мог просто вызвать функцию с городом?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы можете перебрать в этом списке «интерпретации» в поисках названия города и вернуть координаты, когда найдете правильный город.

def lat_long(city):
    geocode_result = requests.get('http://www.datasciencetoolkit.org/twofishes?query= "city"')
    for interpretation in geocode_result["interpretations"]:
        if interpretation["where"] == city:
            return interpretation["feature"]["geometry"]["center"]
0 голосов
/ 27 ноября 2018

Взяв ваш пример, я бы предложил использовать регулярное выражение и интерполяцию строк.В этом ответе предполагается, что API каждый раз возвращает данные одинаково.

import re, requests

def lat_long(city: str) -> tuple:
    # replace spaces with escapes
    city = re.sub('\s', '%20', city)
    res = requests.get(f'http://www.datasciencetoolkit.org/twofishes?query={city}')

    data = res.json()
    geo = data['interpretations'][0]['feature']['geometry']['center']

    return (geo['lat'], geo['lng'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...