如何在f-string中使用反斜杠转义序列

8

我想写一些尽可能简单的东西

"{}MESSAGE{}".format("\t"*15, "\t"*15)

使用

f"{'\t'*15}MESSAGE{'\t'*15}" # This is incorrect

但是我收到了以下错误:

>>> something = f"{'\t'*6} Weather"
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash
>>> something = f"{\'\t\'*6} Weather"
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash

我应该怎么做?


很遗憾,在f-string表达式中不能使用反斜杠。您可以将制表符分配给变量,然后使用该变量。 - khelwood
2
展示错误,你就拥有了一个好问题。 - Mad Physicist
3个回答

4
正如错误信息所说,反斜杠与f字符串不兼容。简单来说,将制表符字符放入一个变量中并使用它即可。
tab = '\t' * 15
f"{tab}MESSAGE{tab}"

3

你可能看到了这个:

>>> f"{'\t'*15}MESSAGE{'\t'*15}"
  File "<stdin>", line 1
    f"{'\t'*15}MESSAGE{'\t'*15}"
                                ^
SyntaxError: f-string expression part cannot include a backslash

为简单起见,f字符串表达式不能包含反斜杠,因此您需要执行以下操作

>>> spacer = '\t' * 15
>>> f"{spacer}MESSAGE{spacer}"
'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tMESSAGE\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'
>>>

1
你可以将这15个标签分配给一个变量,然后在f-string中使用该变量:
>>> tabs = "\t"*15
>>> f"{tabs}MESSAGE{tabs}"
>>> f"{tabs}MESSAGE{tabs}" == "{}MESSAGE{}".format("\t"*15, "\t"*15)
>>> True

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接