gpt4 book ai didi

python - 如何从不完整的字典中替换 python 中字符串中的命名变量?

转载 作者:行者123 更新时间:2023-12-01 05:44:51 25 4
gpt4 key购买 nike

我有一个很长的 html 表单,我正在从中检索数据,然后填充到 html 文档中并通过电子邮件发送。我使用 form = cgi.FieldStorage() 获取从表单发布的数据,然后我有一个类似于消息正文的字符串(但比它长)

 msg = """<html><p>%(Frist_Name)s</p><p>%(Last_Name)s</p></html> """ % form

根据调试,这会起作用,直到找到我的命名变量之一,该变量未随表单一起提交。

表单上有许多可选字段,我可以做什么来完成这项工作或执行类似的操作,这样我就不必事先收集所有字段(即手动重新输入每个字段)并创建一个空白字段,如果没有吗?还是没有比这样做更简单的方法了?

最佳答案

设置默认值

my_data_dict = {'first_name':'','last_name':'','blah':'','something_else':''} #defaults with all values from format string
my_data_dict.update(form) #replace any values we got
msg = """<html><p>%(Frist_Name)s</p><p>%(Last_Name)s</p></html> """ % my_data_dict

或者使用默认字典(这样你就不需要输入所有默认值,它们会神奇地变成“”)

from collections import defaultdict
my_dict = defaultdict(str)
print my_dict['some_key_that_doesnt_exist'] #should print empty string
my_dict.update(form)
msg = """<html><p>%(Frist_Name)s</p><p>%(Last_Name)s</p></html> """ % my_data_dict

或者正如 abarnert 指出的,你可以将其简化为

from collections import defaultdict
my_dict = defaultdict(str,form)
msg = """<html><p>%(Frist_Name)s</p><p>%(Last_Name)s</p></html> """ % my_dict

这是我刚刚在终端中完成的完整示例

>>> d = defaultdict(str,{'fname':'bob','lname':'smith','zipcode':11111})
>>> format_str = "Name: %(fname)s %(lname)s\nPhone: %(telephone)s\nZipcode: %(z
ipcode)s"
>>> d
defaultdict(<type 'str'>, {'lname': 'smith', 'zipcode': 11111, 'fname': 'bob'})
>>> #notice no telephone here
...
>>> d['extra_unneeded_argument'] =' just for show'
>>> d
defaultdict(<type 'str'>, {'lname': 'smith', 'extra_unneeded_argument': ' just f
or show', 'zipcode': 11111, 'fname': 'bob'})
>>> print format_str%d
Name: bob smith
Phone:
Zipcode: 11111

关于python - 如何从不完整的字典中替换 python 中字符串中的命名变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405049/

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