当前位置: 首页 > 面试题库 >

Python,对面函数urllib.urlencode

拓拔欣嘉
2023-03-14
问题内容

处理urllib.urlencode成字典后如何转换数据? urllib.urldecode不存在。


问题答案:

由于该文档的urlencode发言权,

urlparse模块提供了parse_qs()和parse_qsl()函数,这些函数用于将查询字符串解析为Python数据结构。

(在较早的Python版本中,它们位于cgi模块中)。因此,例如:

>>> import urllib
>>> import urlparse
>>> d = {'a':'b', 'c':'d'}
>>> s = urllib.urlencode(d)
>>> s
'a=b&c=d'
>>> d1 = urlparse.parse_qs(s)
>>> d1
{'a': ['b'], 'c': ['d']}

原始字典d与“双向”字典之间的明显区别在于d1,后者具有(在本例 为单项) 列表 作为值-
这是因为查询字符串中没有唯一性保证,这可能很重要让您的应用知道每个键给出了多个值(也就是说,列表并不总是单项的;-)。

作为备选:

>>> sq = urlparse.parse_qsl(s)
>>> sq  
[('a', 'b'), ('c', 'd')]
>>> dict(sq)
{'a': 'b', 'c': 'd'}

您可以获得一对对的序列(urlencode也接受此类参数-
在这种情况下,它保留顺序,而在dict情况下,则不保留顺序;-)。如果您知道没有重复的“键”,或者不在乎是否存在,那么(如我所示),您可以调用dict以获取具有非列表值的字典。但一般情况下,你需要考虑你想要做什么,如果重复
存在(Python没有决定代表你;-)。



 类似资料:
  • 问题内容: 我总是在Python中听到此语句(关于主题(例如,装饰器等,当您传递函数等时)),但从未真正看到对此的详细说明。 例如,可以创建一个仅包含一个抽象方法的类,并使用一组开括号和闭括号将其调用。 这样你就可以 我在这里的理解可能使事情变得遥不可及,我只是对人们的含义感到好奇。 问题答案: 您正在寻找方法。函数对象具有该方法: 并不是说Python解释程序循环在遇到Python函数对象时实际

  • 秉承着一切皆对象的理念,我们再次回头来看函数(function)。函数也是一个对象,具有属性(可以使用dir()查询)。作为对象,它还可以赋值给其它对象名,或者作为参数传递。 lambda函数 在展开之前,我们先提一下lambda函数。可以利用lambda函数的语法,定义函数。lambda例子如下: func = lambda x,y: x + y print func(3,4) lambda生成

  • 变量声明与 C 语言的不同 Lua 中有一个常见的用法,不论变量、函数都可以用下面这种方法保存到局部变量中(同时加快访问速度): local foo = foo 书里加了个括号来解释这种写法: The local foo becomes visible only after its declaration. 这一点需要瞎扯的是 C 语言里相应的东西。 int foo = 12; int ba

  • 本文向大家介绍python进阶教程之函数对象(函数也是对象),包括了python进阶教程之函数对象(函数也是对象)的使用技巧和注意事项,需要的朋友参考一下 秉承着一切皆对象的理念,我们再次回头来看函数(function)。函数也是一个对象,具有属性(可以使用dir()查询)。作为对象,它还可以赋值给其它对象名,或者作为参数传递。 lambda函数 在展开之前,我们先提一下lambda函数。可以利用

  • 主要内容:Python函数的定义,Python函数的调用,为函数提供说明文档Python 中函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。 除了可以直接使用的内置函数外,Python 还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。 举个例子,前面学习了 len() 函数,通过它我们可以直

  • 我们已经接触过函数(function)的参数(arguments)传递。当时我们根据位置,传递对应的参数。我们将接触更多的参数传递方式。 回忆一下位置传递: def f(a,b,c): return a+b+c print(f(1,2,3)) 在调用f时,1,2,3根据位置分别传递给了a,b,c。 关键字传递 有些情况下,用位置传递会感觉比较死板。关键字(keyword)传递是根据每个参