SyntaxError: f-string 表达式部分不能包含反斜杠

SyntaxError: f-string 表达式部分不能包含反斜杠

SyntaxError: f-string expression part cannot include a backslash

当我们在格式化字符串的大括号之间使用反斜杠时,会出现 Python“SyntaxError: f-string expression part cannot include a backslash”。

要解决该错误,请将反斜杠字符存储在变量中或将其移出 f 字符串的花括号。

syntaxerror f 字符串表达式部分不能包含反斜杠

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

主程序
first = 'Bobby' last = 'Hadz' # ⛔️ SyntaxError: f-string expression part cannot include a backslash result = f'{first\n}{last}'

f 字符串中不允许使用反斜杠

我们不能在格式化字符串文字的表达式部分(花括号)中使用反斜杠

将反斜杠提取到变量中

解决错误的一种方法是将\\n字符提取到变量中。

主程序
first = 'Bobby' last = 'Hadz' nl_char = '\n' * 2 result = f'{first}{nl_char}{last}' # Bobby # Hadz print(result)

反斜杠字符不能直接出现在 f 字符串的表达式部分中。

但是,我们可以将反斜杠提取到一个变量中,并将该变量插入到字符串中。

主程序
backslash = '\\' first = 'Bobby' last = 'Hadz' a_str = f'{backslash} {first} {backslash} {last}' print(a_str) # \ Bobby \ Hadz

如此thead所示
,Python 中不允许括号内的反斜杠。

将反斜杠移出花括号

如果您的用例不需要表达式,而您只有反斜杠或字符\n,请将其移出大括号。

主程序
first = 'Bobby' last = 'Hadz' result = f'{first}\n{last}' # Bobby # Hadz print(result)

代码示例仅使用反斜杠\n向 f 字符串添加换行符,因此没有充分理由将反斜杠放在表达式
{}字段中。

这是另一个将换行符提取到变量中的示例,因此我们可以在 f 字符串的表达式中使用它。

主程序
employees = ['Alice', 'Bob', 'Carl'] newline_char = '\n' my_str = f'Employees list: \n{newline_char.join(employees)}' # Employees list: # Alice # Bob # Carl print(my_str)

我们在换行符上调用了str.join()方法。

请注意,我们声明了一个变量并将其设置为换行符,\n以便能够在表达式{}字段中使用该字符。

使用 chr() 函数将反斜杠或换行符插入到 f 字符串中

您还可以使用该chr()函数将反斜杠插入到
{}f 字符串的表达式部分。

主程序
first = 'Bobby' last = 'Hadz' a_str = f'{chr(92)} {first} {chr(92)} {last}' print(a_str) # \ Bobby \ Hadz

chr函数返回表示给定 Unicode 代码点处的字符的字符串。

主程序
print(chr(92)) # 👉️ \ print(chr(92)) # 👉️ \ print(chr(8364)) # 👉️ €

chr(10)如果需要\n在 f 字符串中插入换行符,则可以使用。

主程序
first = 'Bobby' last = 'Hadz' a_str = f'{chr(10)} {first} {chr(10)} {last}' # Bobby # Hadz print(a_str)

使用 os.linesep() 而不是\n

os.linesep如果需要向字符串添加换行符,也可以使用该属性。

主程序
import os my_str = f"bobby{os.linesep}hadz" # bobby # hadz print(my_str)

os.linesep属性返回用于在当前平台上分隔行字符串。

例如\n在 Unix 和\r\nWindows 上。

格式化字符串文字在 Python 中是如何工作的

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

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

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

使用 str.format() 方法代替格式化字符串文字

您还可以使用该str.format()方法而不是格式化的字符串文字。

主程序
first = 'Bobby' last = 'Hadz' result = 'Name: {}{}'.format(first + '\n', last) # Name: Bobby # Hadz print(result)

花括号内没有使用反斜杠,因此不再出现错误。

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

主程序
first = 'bobby' last = 'hadz' result = "Name: {} {}".format(first, last) print(result) # 👉️ "Name: bobby hadz"

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

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

额外资源

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