当前位置:首页 » 编程语言 » python的quote

python的quote

发布时间: 2025-09-20 11:07:56

‘壹’ python中quote函数是什么意思,怎么用

quote函数一般用于处理URL链接里的特殊字符,比如一些非ASCII列表中的字母。

位置:该函数在Python27中位于urllib模块下,在Python3中应该是向下移动一级目录,位于urllib.parse模块中。

功能:替换字符串string中的一些特殊字符,并使用%xx的方式替换该特殊字符(xx为该字符的(uft-8)十六进制数值)。正常字符ascii字母a-z,数字,还有符号'_.-'是不会被替换的。当然使用函数的第二个参数(默认值为/)可以指定哪些字符也不需要替换。

例子:

>>>urllib.quote('/test')
'/test'
>>>urllib.quote('/test',safe='')
'%2Ftest'#2F为/的uft-8的hex值。

其他:函数的第一个参数为需要转换的字符串,格式应该为str或者bytes。

函数的第三个字符为编码方式。

‘贰’ url编码问题在python中怎么解决

最近在抓取一些js代码产生的动态数据,需要模拟js请求获得所需用的数据,遇到对url进行编码和解码的问题,就把遇到的问题总结一下,有总结才有进步,才能使学到的知识更加清晰。对url进行编码和解码,python提供了很方便的接口进行调用。

url中的query带有特殊字符(不是url的保留字)时需要进行编码。当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。

(1) url编码:

import urllib

url = 'wd=哈哈' #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。

url = url.decode('gbk', 'replace')

print urllib.quote(url.encode('utf-8', 'replace'))

结果: 3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88

(2) url解码:

import urllib

encoded_url = est.com%2fs%3fwd%3d%e5%93%88%e5%93%88'

print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace') #反过来

函数调用的参数以及结果都是utf-8编码的,所以在对url编码时,需要将参数串的编码从原始编码转换成utf-8,

对url解码时,需要将解码结果从utf-8转换成原始编码格式。

依据网站采用的编码不同,或是gbk或是utf-8,赋赋予不同的编码,进行不同的url转码。GBK格式,一个中文字符转为%xx%xx,共两组;utf-8格式,一个中文字符转为%xx%xx%xx,共三组。

  • >>>importsys,urllib

  • >>>s='杭州'

  • >>>urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))

  • %BA%BC%D6%DD

  • >>>urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))

  • '%E6%9D%AD%E5%B7%9E'

  • [python]view plain

  • a="墨西哥女孩被拐4年接客4万次生的孩子成为人质-搜狐新闻"

  • printurllib.quote(urllib.quote(a))

  • 进行两次编码转换后,会变为:%25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9.................................................................................这样的形式。

    同样需要两次解码后才能得到中文。

    最近用python写了个小爬虫自动下点东西,但是url 是含中文的,而且中文似乎是 gbk 编码然后转成 url的。举个例子吧,我如果有个unicode字符串“历史上那些牛人们.pdf”,那么我转换成url之后是,
    t="%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E9%82%A3%E4%BA%9B%E7%89%9B%E4%BA%BA%E4%BB%AC.pdf",
    但是对方网站给的是 s="%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF"

    >>>print urllib.unquote("%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF").decode('gbk').encode('utf-8')

    >>>历史上那些牛人们.PDF

‘叁’ Python字符串是什么,如何使用

字符串的表示

字符串可以被成对的单引号(single quote)或双引号(double quotes)包围起来,这两者的作用是一样的:

更多关于Python的基础性知识可以看下这个网页的视频教程,Python常见的数据类型及使用方法掌握,希望我的回答能帮到你。

热点内容
云服务器是真云吗 发布:2025-09-20 13:13:04 浏览:978
html转pdfphp 发布:2025-09-20 13:12:51 浏览:212
反编译jne 发布:2025-09-20 13:06:23 浏览:418
数据库学生信息系统 发布:2025-09-20 13:04:52 浏览:439
三位小密码锁如何设置 发布:2025-09-20 12:59:00 浏览:968
好的服务器电脑 发布:2025-09-20 12:45:20 浏览:397
c语言进制格式 发布:2025-09-20 12:45:19 浏览:722
加密移动硬盘忘记密码 发布:2025-09-20 12:31:47 浏览:523
数据库约束是什么 发布:2025-09-20 12:14:07 浏览:747
我的世界统一验证服务器 发布:2025-09-20 11:51:59 浏览:194