通过读取配置文件中的值来寻找一种优雅的方法来创建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解决方案?一种抽象这种想法的方法?谢谢。
答案 0 :(得分:1)
这样做的一种方法是,如果你像我一样喜欢列表理解:
params = [param1,param2,param3]
query_array = ['query%d=%s'%(ii+1,param) for ii,param in enumerate(params) if param]
url += '?'+'&'.join(query_array)
这样就无需单独检查所有参数,看它们是否存在
答案 1 :(得分:1)
将字段存储在字典中作为" key:value"对(您可以使用CSV阅读器将文件作为字典读取)并在需要时将它们附加到基本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'