【问题标题】:Getting an "invalid syntax" when trying to perform string interpolation尝试执行字符串插值时出现“无效语法”
【发布时间】:2017-06-26 21:04:17
【问题描述】:

我最近一直在学习 python 3,但我找不到任何涉及字符串插值(格式化)的示例。

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.

我在 Ubuntu 16.04 上:

python3 --version
Python 3.5.2

我只是忽略了基本语法吗?我在几台同学的电脑上运行过同样的命令,似乎执行得很好。

【问题讨论】:

  • 其他人用的是什么版本的python?你似乎已经回答了你自己的问题。 docs.python.org/3/whatsnew/…
  • @yeputons,避免在 cmets 中回答问题。添加答案。
  • 这是 Python 3.6 的特性。

标签: python python-3.x ubuntu-16.04 string-interpolation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 在我尝试过的所有方法中,这是唯一有效的方法。谢谢!
    【解决方案3】:

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

    message = "I live in {state}"
    

    我发现它比.format(state) 更容易

    【讨论】:

    • 嗯,它“有效”,因为它没有给出语法错误......它是否符合预期是另一个问题。
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多