2016-01-30 7 views
0

Использование кода я получил по следующей ссылке: http://python-overpy.readthedocs.org/en/latest/example.html Я хочу, чтобы вместо входных переменных, которые я уже полученные вместо непосредственного их ввода, например, следующим образом:ввода получены переменные путепровода вызова API в питона

import overpy 
api = overpy.Overpass() 
result = api.query("node(min_lat,min_lon,max_lat,max_lon);out;") 
len(result.nodes) 

Переменные min_lat и т. Д. Имеют тип float. Это ошибка, я получаю:

overpy.exception.OverpassBadRequest: Error: line 1: parse error: Unknown query clause 
Error: line 1: parse error: ')' expected - 'min_lat' found. 
Error: line 1: parse error: An empty query is not allowed 
Error: line 1: parse error: Unknown type ";" 
Error: line 1: parse error: An empty query is not allowed 

Любая помощь очень ценится как я совсем застрял и новое на все это спасибо!

ответ

1

Вы буквально отправляете запрос node(min_lat,min_lon,max_lat,max_lon);out; в API Overpass, min_lat и т. Д. Не изменяются.

Чтобы заполнить переменные, которые можно использовать строку замены:

"node(%s, %s, %s, %s);out;" % (min_lat, min_lon, max_lat, max_lon) 

%s получит замененные с переменными, поставляющих в скобках.

import overpy 
api = overpy.Overpass() 

min_lat = 50.745 
min_lon = 7.17 
max_lat = 50.75 
max_lon = 7.18 

query = "node(%s, %s, %s, %s);out;" % (min_lat, min_lon, max_lat, max_lon) 
result = api.query(query) 

print query 
print len(result.nodes) 
+0

Спасибо за помощь, я думаю, что это сработало, поскольку ошибок больше нет, однако по какой-то причине ничего не печатается. Считаете ли вы, что это отдельный вопрос, или вы знаете, почему это происходит. Еще раз спасибо за вашу помощь. Я очень ценю это! – RyanKilkelly

+0

@RyanKilkelly Последняя строка вашего кода (и учебников) - это 'len (result.nodes)', который работает в интерпретаторе Python (в командной строке) и выводит некоторое число. При запуске этого кода через 'python script.py' (или другими способами) вы должны добавить' print', как в моем коде, иначе он ничего не отобразит. – chrki

+0

У меня есть печать, добавленная точно так же, как и ваш код, но она все еще не печатается, не знаю, в чем проблема, но я буду продолжать благодарить вас! – RyanKilkelly