Python根据输入

时间:2017-05-24 23:18:41

标签: python url config

通过读取配置文件中的值来寻找一种优雅的方法来创建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解决方案?一种抽象这种想法的方法?谢谢。

2 个答案:

答案 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'