Python 阅读文本中的占位符

Python placeholders in read text

我是 Python 的新手,通过观看教程和试错之类的方式自学,然后我 运行 完成了一项我无法完成的任务立即解决:

我正在使用以下代码读取文件:

def read_file(file):
    try:
        with open(file) as f:
            content = f.read()
            return content
    except FileNotFoundError:
        print("\nThis file does not exist!")
        exit()

我正在阅读的文件 (.txt) 包含带有多个占位符的文本:

Hello {name}, you are on {street_name}!

现在我想用相应的变量替换占位符 {name}{street_name}

我知道 f 弦的工作原理。这也可以以某种方式应用于这个问题,还是我必须解析文本以找到占位符并以某种方式找出合适的变量?

我阅读的每篇文章都包含不同的占位符。所以我必须找出它是哪个占位符并将其替换为相应的字符串。

不确定这是否是您要查找的内容:

string = "Hello {name}, you are on {street_name}!"
string = string.format(name="Joe", street_name="Main Street")
print(string)

string = "Hello {name}, you are on {street_name}!"
name = "Joe"
street_name = "Main Street"
string = string.format(name=name, street_name=street_name)
print(string)

给你

Hello Joe, you are on Main Street!

参见 here

如果您真的不知道文本中的占位符是什么,那么您可以这样做:

import re

string = "Hello {name}, you are on {street_name}!"
name = "Joe"
street_name = "Main Street"

placeholders = set(re.findall(r"{(\w+)}", string))
string = string.format_map({
    placeholder: globals().get(placeholder, "UNKOWN")
    for placeholder in placeholders
})

如果您知道所有占位符都作为变量存在,那么您可以简单地执行以下操作:

string = "Hello {name}, you are on {street_name}!"
name = "Joe"
street_name = "Main Street"

string = string.format_map(globals())