【发布时间】:2018-04-30 13:12:05
【问题描述】:
我在 python 的新 f-strings 上阅读了这个blog,它们看起来非常整洁。但是,我希望能够从字符串或文件中加载 f 字符串。
我似乎找不到任何执行此操作的字符串方法或其他函数。
来自我上面链接中的示例:
name = 'Fred'
age = 42
f"My name is {name} and I am {age} years old"
'My name is Fred and I am 42 years old'
但是如果我有一个字符串 s 呢?我希望能够 eff-ify s,像这样:
name = 'Fred'
age = 42
s = "My name is {name} and I am {age} years old"
effify(s)
事实证明,我已经可以执行类似于 str.format 的操作并获得性能提升。即:
format = lambda name, age: f"My name is {name} and I am {age} years old"
format('Ted', 12)
'My name is Ted and I am 12 years old'
【问题讨论】:
-
s.format(name="John", age=10)或s.format(**globals)或类似的。 -
f-strings 是 python 3.6 中的新内容,是不可调用的文字。我知道如何获得类似的东西。我想要的是制作一个现有的字符串(可能从文件中加载)并让它成为一个格式化的字符串文字。
-
所以如果我理解正确,你问如何控制 f 字符串中的表达式何时被评估,@piRSquared?
-
给自己一个nice read :)
-
IIUC,不幸的是,除非您使用
exec:((至少,我认为是这样)
标签: python python-3.x string-interpolation f-string