SyntaxError: f-string 表达式部分不能包含反斜杠
SyntaxError: f-string expression part cannot include a backslash
当我们在格式化字符串的大括号之间使用反斜杠时,会出现 Python“SyntaxError: f-string expression part cannot include a backslash”。
要解决该错误,请将反斜杠字符存储在变量中或将其移出 f 字符串的花括号。
下面是错误如何发生的示例。
first = 'Bobby' last = 'Hadz' # ⛔️ SyntaxError: f-string expression part cannot include a backslash result = f'{first\n}{last}'
我们不能在格式化字符串文字的表达式部分(花括号)中使用反斜杠
。
将反斜杠提取到变量中
解决错误的一种方法是将\
或\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\n
Windows 上。
格式化字符串文字在 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 字符串进行条件格式化的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: