Вопрос-Ответ

f-strings giving SyntaxError?

f -строки, выдающие SyntaxError?

Я попробовал этот код, следуя руководству:

my_name = 'Zed A. Shaw'

print(f"Let's talk about {my_name}.")

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

    print(f"Let's talk about {my_name}.")
^
SyntaxError: invalid syntax

Почему?


Если вы получаете подобную ошибку из чужого кода, не пытайтесь исправить это самостоятельно - другой проект просто не поддерживает вашу версию Python (один пример: использование pytesseract на Python 2.7 и Windows XP). Вместо этого поищите альтернативу или обратитесь к документации проекта или другим ресурсам поддержки для решения проблемы.

В частности, встроенный pip менеджер пакетов имеет проблему, из-за которой для более новых версий pip требуется более новая версия Python, поэтому старые установки не могут обновляться pip после определенного момента. Подробнее см. в разделе Установка pip не работает в python < 3.6 или Обновление pip завершается ошибкой синтаксиса, вызванной sys.stderr.write(f"ОШИБКА: {exc}").

Если внешний инструмент предупреждает о проблеме, даже если Python поддерживает эту функцию, обновите инструмент. См. раздел Получение недопустимой синтаксической ошибки при использовании Pylint, но код выполняется нормально для примера.

Этот вопрос конкретно касается ситуации, когда любая попытка использовать f-strings завершается неудачей (^ в сообщении об ошибке будет указано на закрывающую кавычку). О распространенных проблемах с конкретным синтаксисом f-string читайте в разделе Как мне избежать символов фигурной скобки ({}) в строке при использовании .format (или f-string)?, формула f-string внутри фигурных скобок не работает, Discord.py - SyntaxError f-string: пустое выражение недопустимо, Как использовать перевод строки '\n' в f-string для форматирования вывода в Python 3.6?.

Подробнее об альтернативных подходах к форматированию строк см. в разделе Как мне поместить значение переменной внутрь строки (интерполировать его в строку)?.

Переведено автоматически
Ответ 1

Я думаю, у вас старая версия python. попробуйте обновить python до последней версии. Литералы F-строк были добавлены в python начиная с python 3.6. Подробнее об этом вы можете узнать здесь

Ответ 2

Это проблема с версией python.

Вместо использования

print(f"Let's talk about {my_name}."

использовать

print("Let's talk about {}.".format(my_name))

в python2.

Ваш код работает на python3.7.

Проверьте это здесь:

my_name= "raushan"
print(f"Let's talk about {my_name}.")

https://repl.it/languages/python3

Ответ 3

Интерпретатор Python вызывает следующую проблему из-за неправильной версии python, которую вы вызываете при выполнении программы, поскольку f-строки являются частью python 3, а не python 2. Вы могли бы это сделать python3 filename.py, это должно сработать. Чтобы устранить эту проблему, измените интерпретатор python с 2 на 3.

Ответ 4

f-строки были добавлены в python 3.6. В более старых версиях python f-строка приведет к синтаксической ошибке.

Если вы не хотите (или не можете) обновляться, смотрите Как мне поместить переменную внутри строки в Python? альтернативы f-строкам.

2023-04-23 03:11 python