Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python将URL查询字符串转换为元组列表?_Python_Url_Parsing - Fatal编程技术网

如何使用Python将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

我正在努力将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 = ()
 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('='))