gpt4 book ai didi

python - 用python中的字典字段替换占位符标签

转载 作者:太空狗 更新时间:2023-10-30 00:55:12 26 4
gpt4 key购买 nike

到目前为止,这是我的代码:

import re
template="Hello,my name is [name],today is [date] and the weather is [weather]"
placeholder=re.compile('(\[([a-z]+)\])')
find_tags=placeholder.findall(cam.template_id.text)
fields={field_name:'Michael',field_date:'21/06/2015',field_weather:'sunny'}

for key,placeholder in find_tags:
assemble_msg=template.replace(placeholder,?????)
print assemble_msg

我想用关联的字典字段和最终消息替换每个标签,如下所示:我叫迈克尔,今天是 21/06/2015,天气晴朗。我想自动而不是手动执行此操作。我确信解决方案很简单,但到目前为止我找不到任何解决方案。有帮助吗?

最佳答案

无需使用正则表达式的手动解决方案。 str.format 已经支持(格式略有不同) :

>>> template = "Hello, my name is {name}, today is {date} and the weather is {weather}"
>>> fields = {'name': 'Michael', 'date': '21/06/2015', 'weather': 'sunny'}
>>> template.format(**fields)
Hello, my name is Michael, today is 21/06/2015 and the weather is sunny

如果您不能相应地更改您的 template 字符串,您可以在预处理步骤中轻松地将 [] 替换为 {}。但请注意,如果占位符之一不在 fields 字典中,这将引发 KeyError


如果您想保留手动方法,您可以这样尝试:

template = "Hello, my name is [name], today is [date] and the weather is [weather]"
fields = {'field_name': 'Michael', 'field_date': '21/06/2015', 'field_weather': 'sunny'}
for placeholder, key in re.findall('(\[([a-z]+)\])', template):
template = template.replace(placeholder, fields.get('field_' + key, placeholder))

或者更简单一点,不使用正则表达式:

for key in fields:
placeholder = "[%s]" % key[6:]
template = template.replace(placeholder, fields[key])

之后,template 是带有替换的新字符串。如果您需要保留模板,只需创建该字符串的副本并在该副本中进行替换。在此版本中,如果无法解析占位符,它将保留在字符串中。 (请注意,我在循环中交换了 keyplaceholder 的含义,因为恕我直言,这样更有意义。)

关于python - 用python中的字典字段替换占位符标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com