首页 > 解决方案 > 完成for循环后从列表中格式化Python字符串

问题描述

我正在从几个变量列表和字典构建一个 sql 查询。目前我在 for 循环中格式化每个字符串,如下所示:

for plat in PLATFORM_LIST:
    for gk, gv in GENDER_MAP.items():
        for ak, av in AGE_MAP.items():
            query += line_a.format(plat=plat, gv=gv, av=av, ak=ak)
            query += line_b.format(plat=plat, gv=gv, av=av, ak=ak)
            query += line_c.format(plat=plat, gv=gv, av=av, ak=ak)

其中 a、b 和 c 行是需要使用平台、性别和年龄变量格式化的字符串。

我不想在 for 循环中格式化这些行,而是构建参数化查询,然后再格式化。我怎样才能做到这一点?

标签: pythonsqlstringformatting

解决方案


将格式占位符更改为{}变量名而不是变量名。然后将参数连接到格式列表(确保它们的顺序正确)。

params = []
query_fmt = ""
for plat in PLATFORM_LIST:
    for gk, gv in GENDER_MAP.items():
        for ak, av in AGE_MAP.items():
            query_fmt += line_a + line_b + line_c
            params += [plat, gv, av, ak] * 3

query += query_fmt.format(params)

推荐阅读