语法错误:f-string:不允许空表达式(Python)

SyntaxError: f-string: 不允许空表达式 (Python)

SyntaxError: f-string: empty expression not allowed (Python)

Python“SyntaxError: f-string: empty expression not allowed”发生在格式化字符串文字中有空表达式时。

要解决该错误,请在 f 字符串的花括号之间指定一个表达式或使用 方法str.format()

syntaxerror f 字符串空表达式不允许

下面是错误如何发生的示例。

主程序
name = 'Bobby' my_str = f'employee: {}'.format(name) # ⛔️ SyntaxError: f-string: empty expression not allowed print(my_str)

f 字符串中的空表达式

我们忘记在格式化字符串文字的花括号中指定表达式或变量名

指定花括号内的变量或表达式

解决错误的一种方法是将name变量移到 f 字符串的大括号内。

主程序
name = 'Bobby' my_str = f'employee: {name}' print(my_str) # 👉️ employee: Bobby

格式化字符串文字 (f-strings) 让我们通过在字符串前加上f.

主程序
my_str = 'is subscribed:' my_bool = True result = f'{my_str} {my_bool}' print(result) # 👉️ is subscribed: True

确保将表达式括在大括号 – 中{expression}

您还可以直接在花括号中计算表达式。

主程序
num = 100 name = 'Bobby' result = f'Salary = {num * 2}, Name: {name.upper()}' print(result) # 👉️ Salary = 200, Name: BOBBY

或者,您可以使用该str.format()方法。

使用str.format()方法而不是格式化字符串文字

str.format
方法执行
字符串
格式化操作。

主程序
first = 'Bobby' last = 'Hadz' result = "His name is {} {}".format(first, last) print(result) # 👉️ "His name is Bobby Hadz"

请注意,该字符串没有前缀f

调用该方法的字符串可以包含使用花括号指定的替换字段{}

每个替换字段都可以包含位置参数的数字索引或关键字参数的名称。

主程序
first = 'Bobby' last = 'Hadz' result = "His name is {f} {l}".format(f=first, l=last) print(result) # 👉️ "His name is Bobby Hadz"

上面的示例使用关键字参数而不是位置参数。

确保为该format() 方法提供的参数与字符串中的替换字段一样多。

解决错误的 hacky 方法

这是解决错误的一种 hacky 方法的示例。

主程序
name = 'Bobby' result = f'Name: {{}}'.format(name) print(result) # 👉️ Name: Bobby

我们使用了两套花括号。

从技术上讲,表达式不为空,因此不会引发错误。

然后我们调用str.format()将花括号替换为变量的值name

但是,这种语法很混乱,应该避免使用,因为只使用 f 字符串,否则该str.format()方法更容易阅读。

我还写了一篇关于
如何使用 f 字符串进行条件格式化的文章。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: