这个问题涉及处理 Jupyter 魔法,但可以用更简单的方式表达。给定字符串
旧方法是使用
它还处理函数 - 这是
虽然我们现在知道你可以使用
是否有
s = "the key is {d['key']}"
和字典 d = {'key': 'val'}
,我们想解析字符串。旧方法是使用
.format()
,但它会引发错误 - 它无法处理字典键。"the key is {d['key']}".format(d=d) # ERROR
我以为唯一的解决方法是将字典转化为对象(此处有解释在这里或在这里)。
"the key is {d.key}".format(obj(d))
但是Martijn很好地解释了,你可以简单地省略引号使其正常工作:
"the key is {d[key]}".format(d=d)
新方法f'string'
仍然以直观的Python方式处理字典键:
f"the key is {d['key']}"
它还处理函数 - 这是
.format
无法处理的。f"this means {d['key'].lower()}"
虽然我们现在知道你可以使用
.format
,但我仍然想知道最初的问题:给定s
和d
,如何强制解析f'string'
的s
?我添加了另一个示例,其中包含花括号中的函数,.format
也无法处理,而f'string'
则可以解决。是否有
.fstring()
或可用的方法?Python内部使用什么?
Formatter().parse(template)
? - HappyFaceFormatter().parse()
只关心一个字符串值,而不关心你如何生成这个值。然而,在f-string中使用的任何{...}
占位符语法都已经被填充,因为这就是该语法的作用;立即执行表达式以填充占位符槽。没有模板可以从中提取。 - Martijn Pieters