4

我有一些最初与加号连接的字符串并包含正则表达式字符串。这是一个例子:

"Level 4: " + re.sub(r"(\w)([A-Z])", r"\1 \2", talents[1]) + "\n\n"

但是,我一直想使用更正确的格式。我对 f-strings 做了一些研究,我想在这里使用它们。我试过这样:

f'Level 4: {re.sub(r"(\w)([A-Z])", r"\1 \2", talents[1])} \n\n'

然而,我的编辑对我咆哮着说有反斜杠的表达式片段。在这种情况下,f-strings 不是适合这项工作的工具吗?

编辑:根据@jwodder 的要求,这是我从 Python 得到的错误(我在 3.6 上)

SyntaxError: f-string expression part cannot include a backslash
4

1 回答 1

7

您不能在 f 字符串中插入带有反斜杠的表达式,这目前是设计上的限制。您可以将其分为两个语句:

subst = re.sub(r"(\w)([A-Z])", r"\1 \2", talents[1])
msg = f'Level 4: {subst} \n\n'

(旁注:目前有一项提案(PEP 536)放宽这种限制以使原始代码按预期工作,但尚未被接受或实施。)

于 2018-07-12T16:44:50.937 回答