• Python urllib模块的URL编码解码功能

    urllib的一个常用功能
    服务器君一共花费 9.138 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍。当然 urllib 还有一些其它很有用的辅助方法,比如对 url 进行编码、解码等等。接下来我们再大概介绍一下。

    我们知道,url 中是不能出现一些特殊的符号的,有些符号有特殊的用途。比如以 get 方式提交数据的时候,会在 url 中添加 key=value 这样的字符串,所以在 value 中是不允许有 '=',因此要对其进行编码;与此同时服务器接收到这些参数的时候,要进行解码,还原成原始的数据。这个时候,这些辅助方法会很有用:

    • urllib.quote(string[, safe]):对字符串进行编码。参数 safe 指定了不需要编码的字符;
    • urllib.unquote(string) :对字符串进行解码;
    • urllib.quote_plus(string [ , safe ] ) :与 urllib.quote 类似,但这个方法用'+'来替换' ',而 quote 用'%20'来代替' '
    • urllib.unquote_plus(string ) :对字符串进行解码;
    • urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&age=200"
    • urllib.pathname2url(path):将本地路径转换成 url 路径;
    • urllib.url2pathname(path):将url路径转换成本地路径;

    我们接下来运行一下下面的脚本来加深理解。

    import urllib
    data = 'name = ~nowamagic+5'
      
    data1 = urllib.quote(data)
    print data1 # result: name%20%3D%20%7Enowamagic%2B5
    print urllib.unquote(data1) # name = ~nowamagic+5
      
    data2 = urllib.quote_plus(data)
    print data2 # result: name+%3D+%7Enowamagic%2B5
    print urllib.unquote_plus(data2)    # name = ~nowamagic+5
      
    data3 = urllib.urlencode({ 'name': 'nowamagic-gonn', 'age': 200 })
    print data3 # result: age=200&name=nowamagic-gonn
      
    data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
    print data4 # result: ///D://a/b/c/23.php
    print urllib.url2pathname(data4)    # result: D:/a/b/c/23.php
    

    在 Python Shell 里执行的具体情况为:

    Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> import urllib
    >>> data = 'name = ~nowamagic+5'
    >>> data1 = urllib.quote(data)
    >>> print data1
    name%20%3D%20%7Enowamagic%2B5
    >>> print urllib.unquote(data1)
    name = ~nowamagic+5
    >>> data2 = urllib.quote_plus(data)
    >>> print data2
    name+%3D+%7Enowamagic%2B5
    >>> print urllib.unquote_plus(data2)
    name = ~nowamagic+5
    >>> data3 = urllib.urlencode({ 'name': 'nowamagic-gonn', 'age': 200 })
    >>> print data3
    age=200&name=nowamagic-gonn
    >>> data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
    >>> print data4
    ///D://a/b/c/23.php
    >>> print urllib.url2pathname(data4)
    D:\a\b\c\23.php
    

    urllib 模块的基本使用也比较简单,后面根据使用情况会继续跟进了解。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android View注入框架Butter Knife 3 个条目
  2. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  3. [Python程序设计] Python Web部署的背景知识 9 个条目
  4. [数据结构] 散列表(哈希表) 13 个条目
  5. [PHP程序设计] 命令式编程范式 6 个条目
  6. [Python程序设计] 从PHP到Python 3 个条目
  7. [移动开发] Activity 初步知识 2 个条目
  8. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  9. [移动开发] Android属性系统Property 9 个条目
  10. [PHP程序设计] PHP数组探索 4 个条目
  11. [计算机算法] 两数交换的各种算法细节 2 个条目
  12. [移动开发] 从代码角度去认识 Thread 9 个条目
窗口 -- [八点]