文章目录
问题描述代码参考文献
问题描述
Python拼接get请求参数,无需手动进行? & 中文转义等工作
代码
import urllib
.parse
def url_join_args(api
, query
=None, **kwargs
):
'''拼接get请求参数
:param api: 原url,可带?或不带
:param query: urllib.parse.urlencode支持的query,建议传dict
:param kwargs: 未出现的参数,将组合成字典
:return: 拼接好的url
>>> url_join_args('api.com/s')
'api.com/s'
>>> url_join_args('api.com/s?')
'api.com/s?'
>>> url_join_args('api.com/s', {'a':1, 'b':2})
'api.com/s?a=1&b=2'
>>> url_join_args('api.com/s', (('a', 1), ('b', 2)))
'api.com/s?a=1&b=2'
>>> url_join_args('api.com/s', a=1, b='你好')
'api.com/s?a=1&b=%E4%BD%A0%E5%A5%BD'
>>> url_join_args('api.com/s', {'a':1}, b=2)
'api.com/s?a=1&b=2'
'''
result
= api
if not result
.endswith
('?') and (query
or kwargs
):
result
= api
+ '?'
if query
:
result
= result
+ urllib
.parse
.urlencode
(query
)
if kwargs
:
if query
:
result
= result
+ '&' + urllib
.parse
.urlencode
(kwargs
)
else:
result
= result
+ urllib
.parse
.urlencode
(kwargs
)
return result
参考文献
urllib.parse — Parse URLs into componentsURL - WikipediaPython参数列表*args, **kwargs详解Python3的urllib.parse.urlencode函数