Почему, когда я вставляю это в vim, я получаю синтаксические ошибки?

def latlong_distance(origin, destination):
    lat1, lon1 = origin
    lat2, lon2 = destination
    radius = 6371
    dlat = math.radians(lat2-lat1)
    dlon = math.radians(lon2-lon1)    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
    d = radius * c
    return d * 1000

SyntaxError: не-ASCII-символ '\xc2' в файле /tools.py в строке 65, но кодировка не объявлена; см. http://www.python.org/peps/pep-0263.html подробности


person TIMEX    schedule 08.03.2011    source источник
comment
Вы прочитали сообщение об ошибке?   -  person Ignacio Vazquez-Abrams    schedule 08.03.2011
comment
какое это имеет отношение к вим?   -  person Fosco    schedule 08.03.2011
comment
Вероятно, это проблема с пробелами (\xc2 - это символ пробела), попробуйте изменить отступ, используя только пробелы, ничего больше. Вы также можете поставить # -*- coding:utf-8 -*- вверху файла и посмотреть, поможет ли это.   -  person Rafe Kettler    schedule 08.03.2011
comment
Да, верно, Рейф, спасибо.   -  person TIMEX    schedule 08.03.2011
comment
Я опубликую это как ответ, чтобы мы могли решить эту проблему :)   -  person Rafe Kettler    schedule 08.03.2011


Ответы (2)


Вероятно, это проблема с пробелами (\xc2 - это символ пробела), попробуйте изменить отступ, используя только пробелы, ничего больше. Вы также можете поставить # -*- coding:utf-8 -*- вверху файла и посмотреть, поможет ли это.

person Rafe Kettler    schedule 08.03.2011

Я немного изменил этот код:

dlon = math.radians(lon2-lon1)    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)

должно быть разбито на две строки следующим образом:

dlon = math.radians(lon2-lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)

Я пробовал это, и никаких исключений не возникало. Можете ли вы прикрепить этот файл здесь?

person ljpsfree    schedule 08.03.2011