gpt4 book ai didi

Python:动态生成字符串(基于一些模板)

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

我正在尝试根据使用我的模块的某些代码请求的字符串类型,从我的模块生成特定的 xml 字符串。每个 xml 字符串都包含一些动态生成的数据。例如,许多 xml 字符串都有一个使用另一个函数生成的 cookie 字段。

我从一个 python 字典开始,它使用预先填充的动态字段(即 cookie)(即,不完全动态)来初始化所有 xml 字符串。然后我调用字典来获取相关的 xml 字符串。

这种方法的问题是 cookie 每小时都会过期,因此模块在一小时后返回的字符串具有这些过期值。我理想地希望拥有某种形式的生成器函数(不确定在这种情况下是否可能),该函数根据请求的 msg_type 请求时返回正确形成的字符串(如下例所示)。该字典中保存的每个 xml 字符串都采用独特的格式,因此我无法完全拥有某种通用模板 xml 生成器。

作为示例,我定义的字典看起来与此处的 get_msg 字典类似:

    get_msg["msg_value_1"] = """<ABC cookie=""" + getCookie() + """ > 
<XYZ """ + foo_name +""">
</XYZ>
</ABC>"""

get_msg["msg_value_2"] = """<ABC cookie=""" + getCookie() + """ >
<some text """ + bar_name + """>
</XYZ>
</ABC>"""

能够通过为每个新的消息请求调用 getCookie() 来动态生成这些 xml 字符串,这将是一个好方法。任何意见将不胜感激。

最佳答案

在 Python 中,函数是第一类对象。这意味着您可以将一个函数作为参数传递给另一个函数。

def get_msg(function_to_call_to_get_injection_bit, tag_name_function,
cookie_function):

tagname = tag_name_function()
injection = function_to_call_to_get_injection_bit()
cookie = cookie_function()

return '<ABC cookie="%s">' % (cookie) +
'<%s %s></%s></ABC>' % (tagname, injection, tagname)

def get_injection():
return foo_name

def get_tag_name_1():
return "XYZ"

def get_tag_name_2():
return "SomeText"

get_msg(get_injection, get_tag_name_1, getCookie)
get_msg(get_injection, get_tag_name_2, getCookie)

每次需要消息时,您只需调用 get_msg,并将其传递给生成与 cookie 无关的消息部分的函数。

从您的问题来看,尚不完全清楚问题是什么。但这并不是真正的“生成器函数”:我不认为您想要返回一个函数(这是可能的),您想要返回 XML 字符串并只是自定义它的构建方式。

正如 BenDundee 上面评论的那样,使用 XML 库来构建 XML 可能比手动构建字符串更好。 Python 有几个内置选项,还有更多可用的外部选项(例如精彩的 lxml 库)。

关于Python:动态生成字符串(基于一些模板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572439/

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