f-strings 给出 SyntaxError?

f-strings giving SyntaxError?

提问人:Alexander Coffman 提问时间:5/18/2018 最后编辑:Karl KnechtelAlexander Coffman 更新时间:1/22/2023 访问量:139132

问:

我尝试了这段代码,并遵循教程:

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 版本(例如:在 Python 2.7 和 Windows XP 上使用 pytesseract)。请改为寻找替代方法,或查看项目的文档或其他支持资源以获取解决方法。

特别是,内置的 pip 包管理器存在一个问题,即较新版本的 pip 需要较新的 Python 版本,因此旧安装无法将 pip 升级到某个点。有关详细信息,请参阅在 python < 3.6 中安装 pip 不起作用或升级 pip 失败并出现由 sys.stderr.write(f“ERROR: {exc}”) 导致的语法错误

如果外部工具警告该问题,即使 Python 支持该功能,请更新该工具。有关示例,请参阅使用 Pylint 时出现语法错误无效,但代码运行良好

这个问题专门针对任何使用 f 字符串的尝试都失败的情况(错误消息中的 ^ 将指向结束引号)。有关特定 f-string 语法的常见问题,请参阅如何在使用 .format(或 f-string)时转义字符串中的大括号 ({}) 字符?、大括号内的 f 字符串公式不起作用Discord.py - SyntaxError f-string:不允许空表达式如何在 Python 3.6 中使用 f-string 中的换行符“\n”来格式化输出?

有关字符串格式设置的替代方法的详细信息,请参阅如何将变量的值放入字符串中(将其插值到字符串中)?

python 语法错误 f-string

评论

9赞 jasonharper 5/18/2018
您使用的是哪个 Python 版本?F-Strings 是该语言中相对较新的功能。

答:

69赞 rawwar 5/18/2018 #1

我认为您有一个旧版本的 python。尝试升级到最新版本的 Python。自 python 3.6 以来,已将 F 字符串文字添加到 python 中。你可以在这里查看更多信息

评论

0赞 personal_cloud 12/26/2022
我安装了python 3.6,但仍然收到此错误。某些程序必须仍在运行我也已安装的 python 3.5。但是我不确定为什么程序首先会运行错误版本的 python。
0赞 Ishwara Bhat 12/27/2022
我在 python 3.8 中看到了同样的错误。这是由于以下原因:我在py 2.7中有默认的虚拟环境。我的脚本应该在 Windows 上使用以下命令。d:\<my .venv 路径>\Scripts\Activate.bat && python.exe myscript.py。但是我从命令中错过了“python.exe”。它似乎采用了默认的 env,因为我没有指定 python。
-2赞 Nagaraju AWS 7/12/2018 #2

我认为这是由于旧版本。我已经尝试过新版本并且执行良好。结果正如预期的那样。

评论

1赞 NitinSingh 7/12/2018
请提及您正在使用的版本,并与 OP 的版本匹配。也许修复发生在以后。如果您自己的代码有点不同,也请发布它
0赞 Nagaraju AWS 7/13/2018
我使用在线编译器进行练习。我使用了相同的代码,结果是让我们谈谈 Zed A. Shaw。他身高 74 英寸。他有 180 磅重。实际上,这并不算太重。他有蓝色的眼睛和棕色的头发。他的牙齿通常是白色的,具体取决于咖啡。
4赞 Aran-Fey 10/12/2018 #3

Python 3.6 中添加了 f 字符串。在较旧的 python 版本中,f-string 将导致语法错误。

如果您不想(或不能)升级,请参阅如何在 Python 中将变量放入字符串中? 了解 f 字符串的替代方案。

15赞 Raushan Kumar 9/13/2019 #4

这是一个 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

5赞 Balaji.J.B 4/17/2020 #5

Python 解释器会导致以下问题,因为在执行程序时调用的 python 版本错误,因为 f 字符串是 python 3 而不是 python 2 的一部分。你可以这样做,它应该可以工作。若要解决此问题,请将 python 解释器从 2 更改为 3。python3 filename.py

评论

0赞 chepner 3/31/2023
NIt:不是任何版本的 Python 3 都足够了,尽管即使发布了这个答案,即使是 Python 3.5(最后一个不支持 f 字符串的版本)也非常接近 EOL。
-2赞 Josh Turner 5/8/2020 #6

我相信你在这里遇到的问题归结为你在不知不觉中使用python 2。如果您尚未在计算机上将其设置为将 Python 3 作为默认版本,则应在终端中执行 python3,而不是标准的“python”命令。

我遇到了这个问题,所以希望这个答案对那些寻找它的人有所帮助。