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())
我是 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())