如何使用Python将URL查询字符串转换为元组列表?
我正在努力将url转换为嵌套元组如何使用Python将URL查询字符串转换为元组列表?,python,url,parsing,Python,Url,Parsing,我正在努力将url转换为嵌套元组 # Convert this string str = 'http://somesite.com/?foo=bar&key=val' # to a tuple like this: [(u'foo', u'bar'), (u'key', u'val')] 我想我需要做一些事情,比如: url = 'http://somesite.com/?foo=bar&key=val' url = url.split('?') get = () f
# Convert this string
str = 'http://somesite.com/?foo=bar&key=val'
# to a tuple like this:
[(u'foo', u'bar'), (u'key', u'val')]
我想我需要做一些事情,比如:
url = 'http://somesite.com/?foo=bar&key=val'
url = url.split('?')
get = ()
for param in url[1].split('&'):
get = get + param.split('=')
我做错了什么?谢谢 我相信您正在寻找模块 本模块定义了一个标准 打破统一资源的接口 组件中的定位器(URL)字符串 (寻址方案、网络位置、, 路径等),以组合组件 返回到URL字符串,并进行转换 绝对URL的“相对URL” 给定一个“基本URL” 以下是一个例子:
from urlparse import urlparse, parse_qsl
url = 'http://somesite.com/?foo=bar&key=val'
print parse_qsl(urlparse(url)[4])
输出:
[('foo', 'bar'), ('key', 'val')]
在本例中,我首先使用函数解析整个URL,然后使用函数将查询字符串(从
urlparse
返回的第五个元素)分解为一个元组列表。Andrew的回答非常有用。获取这些参数的一种不太熟练的方法是使用正则表达式——如下所示:
进口稀土
re_param = re.compile(r'(?P<key>w\+)=(?P<value>w\+)')
url = 'http://somesite.com/?foo=bar&key=val''
params_list = re_param.findall(url)
您将get创建为元组,但str.split返回一个列表。也许这可以修复您的代码:
for param in url[1].split('&'):
get = get + tuple(param.split('='))
for param in url[1].split('&'):
get = get + tuple(param.split('='))