如何使用正则表达式格式化f-strings?

问题描述 投票:0回答:1

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

"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字符串不是正确的工具吗?

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

SyntaxError: f-string expression part cannot include a backslash
regex python-3.x f-string
1个回答
3
投票

你不能在f字符串中插入带反斜杠的表达式,这当前是a restriction by design。您可以将其分为两个语句:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.