首页 > 解决方案 > Python - 文件中文本字符串的字符串格式或字符串插值

问题描述

我很想创建一个 python 脚本,它遍历文件夹中的一堆文件,并用脚本中的变量替换一些格式化文本。

对于一个(非常简化的)示例,一个文件夹包含两个文件:

greeting.sql与文字

select greeting
from greeting_list
where name = {name}

credentials.sql与文字

select credentials
from credentials_list
where name = {name}

然后,python 脚本可以拉入这些文本文件,并插入脚本,将{name}文本中的变量替换为预定义的变量,如name = 'Bob'.

就像是

fd = open('greeting.sql', 'r')
greeting = fd.read()
fd.close()

names = ['Jeff','Melanie','Nitin','Satya','Serena']

[run_sql(greeting.format(n)) for n in names] 

我通常使用插值字符串,f'Greeting for {name} is {greeting}'所以我非常确信我在.format()这里的使用没有意义。

此操作的重点是允许分析师更新和维护 SQL 代码,同时让 python 脚本拉入正确版本的脚本并使用各种变量运行它。

标签: pythonstring

解决方案


嗯,问题很明显是我对我的.format()知识很懒惰,因为 f-strings 似乎更容易。解决方案非常简单:

使用上面相同的greeting.sql文件,

py_name = 'Bob'
print(greeting.format(name = py_name))

工作精美


推荐阅读