【发布时间】:2019-09-30 15:57:43
【问题描述】:
我有一系列文件,里面有很多以{myvar} 形式定义的变量。例如
文件.txt
This is {myvar}.
我想打开它们,并正常替换变量:
with open('path/to/file.txt', 'r') as file:
myfile = file.read().replace('\n', '')
myvar='myself.'
print(f"{myfile}")
应该输出:
This is myself.
如何将文件作为格式化字符串打开?或者将字符串转换为格式化字符串?
【问题讨论】:
-
您可以执行类似
file.read().format(myvar='myself')的操作,或者如果您希望将所有替换都放在一个字典中,例如replacements = {'myvar': 'myself'},然后是file.read().format(**replacements)。如果你想使用变量名,那么file.read().format(**locals())或file.read().format(**globals())。 -
另外,请查看 Jinja2:jinja.pocoo.org/docs/2.10。这是一个非常很好的模板语言
-
@jdehesa 您能否进一步解释一下
.format(**locals())或**globals()的工作原理?我仍然需要使用您显示的字典,例如replacements,对吗? -
@Sosi 不,
locals()和globals()自己返回字典,因此 unpacking them with**将直接使它们作为基于关键字的替换。 -
@Sosi 我要给这个加注星标,今晚如果有人还没有回答的话,我会试着给你一个好的答案
标签: python python-3.x string file