Я знаю, что F Strings были введены в Python 3.6. Из-за этого я получал ошибку - Invalid Syntax
DATA_FILENAME = 'data.json'
def load_data(apps, schema_editor):
Shop = apps.get_model('shops', 'Shop')
jsonfile = Path(__file__).parents[2] / DATA_FILENAME
with open(str(jsonfile)) as datafile:
objects = json.load(datafile)
for obj in objects['elements']:
try:
objType = obj['type']
if objType == 'node':
tags = obj['tags']
name = tags.get('name','no-name')
longitude = obj.get('lon', 0)
latitude = obj.get('lat', 0)
location = fromstr(F'POINT({longitude} {latitude})', srid=4326)
Shop(name=name, location = location).save()
except KeyError:
pass
Ошибка -
location = (F'POINT({longitude} {latitude})', srid=4326)
^
SyntaxError: invalid syntax
Так что я использовал -
fromstr('POINT({} {})'.format(longitude, latitude), srid=4326)
Ошибка была удалена, и это сработало для меня. Затем я нашел эту библиотеку будущее-fstrings. Должен ли я использовать его. Что удалит вышеперечисленное Invalid Error
Ну, f-строки доступны только с Python 3.6.
Почему сообщение об ошибке не соответствует вашему коду?
Скорее всего просто ошибка копирования и вставки.
@holdenweb Это была бы странная ошибка копирования-вставки, из-за которой оператор пропускается посередине.
Квантовое туннелирование Bytestring, скорее всего ;-). Просто используя самую благотворительную интерпретацию.
Еще больше дерьма Python, которое ломает базовый ввод-вывод... Разработчики Python должны получить премию Дарвина. Насколько сложно заставить ввод-вывод «просто работать»?






Для более старых версий Python (до 3.6):
pip install future-fstrings
вы должны разместить специальную строку в верхней части вашего кода:
coding: future_fstrings
Следовательно, в вашем случае:
# -*- coding: future_fstrings -*-
# rest of the code
location = fromstr(f'POINT({longitude} {latitude})', srid=4326)
Необходимо, чтобы оператор начинался с решётки, то есть "# -- кодировка: future_fstrings --", иначе не сработает. Пожалуйста, исправьте свой ответ.
Строки формата («f») не были представлены до Python 3.6.