Python 根据输入动态创建字符串

Python Dynamically Create String Based on Input

正在寻找一种优雅的方式来创建 URL,方法是从配置文件中读取值。

如果我在配置文件中有以下三个字段:

query1=
query2=
query3=

我想将它们添加到 BASE_URL 如果它们存在,请问有什么优雅的方法可以做到这一点?

我知道有一个丑陋的答案,例如:

url +='?query1={}'.format(param1) if param1 and Not param2 or param3
url +='?query1={}&query2={}'.format(param1,param2) if param1 and param2 and Not param3
etc...

有没有优雅的pythonic解决方案?抽象这个想法的方法?谢谢。

如果您像我一样是列表理解的粉丝,可以这样做:

params = [param1,param2,param3]

query_array = ['query%d=%s'%(ii+1,param) for ii,param in enumerate(params) if param]
url += '?'+'&'.join(query_array)

这将消除单独检查所有参数以查看它们是否存在的需要

将字段作为 "key:value" 对存储在字典中(您可以使用 CSV reader 将文件作为字典读取)并在需要时将它们附加到基础 URL 中:

fields = {'query1' : 'value1', 'query2' : '', 'query3' : 5, ...}
if fields: # Avoid null fields
    url += '?' + '&'.join('{}={}'.format(k,v) for k,v in fields.items() if v)
# '...?query1=value1&query3=5'