SyntaxError: f-string: 不允许空表达式 (Python)
SyntaxError: f-string: empty expression not allowed (Python)
Python“SyntaxError: f-string: empty expression not allowed”发生在格式化字符串文字中有空表达式时。
要解决该错误,请在 f 字符串的花括号之间指定一个表达式或使用 方法str.format()
。
下面是错误如何发生的示例。
主程序
name = 'Bobby' my_str = f'employee: {}'.format(name) # ⛔️ SyntaxError: f-string: empty expression not allowed print(my_str)
我们忘记在格式化字符串文字的花括号中指定表达式或变量名
。
指定花括号内的变量或表达式
解决错误的一种方法是将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 字符串进行条件格式化的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: