【发布时间】:2019-11-08 15:58:12
【问题描述】:
我有一个字符串插值问题,我不确定如何解决。非常感谢任何帮助解决这个问题。
摘要:我有一个组成电子邮件正文的字符串模板。此字符串模板具有静态和动态内容。目的是用字典的帮助下提供的特定于上下文的值填充模板的所有动态部分。
问题:如果您查看代码和输出,我可以从字典中提取Key/Value(第一次和第二次打印输出)。但是,当Values 成为list 或tuple 等集合类型时,我无法提取它们;尤其是文本的动态部分嵌入了[ ] 或( )(第三个打印输出)。
是否可以从输出中避免 [ ] 或 ( ) 构造?我希望输出为
'foo', 'bar'
而不是
['foo', 'bar']
import string
values = {'dynamic': 'foo'}
t = string.Template("""
Static contents : $dynamic
More static contents.
""")
print('Body:', t.substitute(values))
values = {'dynamic': 'foo, bar'}
print('Body:', t.substitute(values))
values = {'dynamic': ['foo', 'bar']}
print('Body:', t.substitute(values))
注意:给定的逻辑和示例仅代表我如何注入一个动态内容的想法。实际上,我有不止一个动态变量要填充。类似于 Mail Merge 在 Microsoft Word 中所做的事情。 例如:
values = {'surname': 'xxx',
'email':'something@email.com',
'title':'Mr',
'reference':'xxxxx'
'contacts':['a','b','c']
}
【问题讨论】:
-
在使用
t.substitute之前,您需要知道字典中存储的值的类型并将它们转换为所需的字符串。 -
@Error-SyntacticalRemorse,谢谢,线程已更新为更加明确。
标签: python python-3.x