Python - 文件中文本字符串的字符串格式化或字符串插值

标签 python string

我很想创建一个 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} 是 {greeting}' 所以我对这里使用 .format() 非常有信心没有意义。

此操作的目的是允许分析人员更新和维护 SQL 代码,同时让 python 脚本提取正确版本的脚本并使用各种变量运行它。

最佳答案

嗯,问题很明显是我对 .format() 知识的懒惰,因为 f 字符串看起来容易得多。解决方案非常简单:

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

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

做工精美

关于Python - 文件中文本字符串的字符串格式化或字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65943717/

相关文章:

ios - 快速比较按钮内的字符串

python - 不缩进打印多行字符串变量

Java - 对字符串数组进行排序/按字母顺序排列

string - 序言术语到字符串

python - 使用Keras做迁移学习报错: AttributeError: 'list' object has no attribute 'dtype'

c# - 如何删除所有出现的字符/子字符串?

string - 如何在 C++ 中区分两个很长的字符串?

python 字典: get vs setdefault

python numpy 保存文本

python - 需要处理的数据太多