如何使用正则表达式来格式化F字符串?

时间:2018-07-12 14:26:19

标签: regex python-3.x f-string

我有一些最初由加号连接的字符串,其中包括正则表达式字符串。这是一个示例:

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

但是,我一直想使用更适当的格式。我对f弦做了一些研究,我想在这里使用它们。我是这样尝试的:

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

1 个答案:

答案 0 :(得分: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),以放松这种限制以使原始代码按预期工作,但尚未接受或实施。)