为什么我从 f 字符串中得到“无效语法”?[复制]

Why am I getting "invalid syntax" from an f-string? [duplicate]

提问人:Sven E 提问时间:2/9/2017 最后编辑:Karl KnechtelSven E 更新时间:11/22/2023 访问量:118367

问:

我无法让 f 字符串在 Python 3 中工作。我在 REPL 上尝试了这个:

In [1]: state = "Washington"

In [2]: state
Out[2]: 'Washington'

In [3]: my_message = f"I live in {state}"
File "<ipython-input-3-d004dd9e0255>", line 1
my_message = f"I live in {state}"
                                ^
SyntaxError: invalid syntax

我以为我的机器默认为 python 2,但快速检查显示:

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
Type "copyright", "credits" or "license" for more information.

IPython 5.2.2 -- An enhanced Interactive Python.

出了什么问题,我该如何解决?

python-3.x 语法错误 python-3.5

评论

3赞 Josh Lee 2/9/2017
其他人使用的是哪个版本的 python?你似乎已经回答了你自己的问题。docs.python.org/3/whatsnew/......
0赞 Adrian Sanguineti 2/9/2017
@yeputons,避免在评论中回答问题。添加答案。
0赞 Karl Knechtel 1/22/2023
这是一个接近的电话,但我认为另一个问题的答案总体上稍微好一些,所以我把这个问题作为规范。

答:

97赞 yeputons 2/9/2017 #1

正如 Josh Lee 在评论部分所建议的那样,这种字符串插值仅在 Python 3.6 中添加,请参阅 Python 3.6 中的新功能(这里称为“PEP 498:格式化字符串文字”)。

但是,您似乎使用的是 Python 3.5.2,它不支持该语法。

23赞 Ritesh Kankonkar 1/21/2020 #2

这是一个非常古老的问题,不确定是否在其他地方得到答案,但遇到了同样的问题并登陆了一些令人困惑的页面。几分钟后想通了。下面一行应该可以工作。

my_message = "I live in {}".format(state)

.format 适用于 3.5。在此处记录它,供可能需要它来解决类似问题的人使用。

评论

0赞 Farid 1/21/2020
在我尝试过的所有方法中,这是唯一有效的方法。谢谢!
-13赞 hamstercoding 9/6/2020 #3

对我有用的(在 sublime 的 python 3.8.5 中)是删除 f。

message = "I live in {state}"

我发现它比.format(state)

评论

11赞 fool4jesus 9/8/2020
好吧,它“有效”的意思是它不会给出语法错误......它是否符合预期是另一个问题。
0赞 Sven E 4/21/2022
这不会引发错误,但不会在字符串输出中插入您的值。state