[实践笔记] Python的URL编码与kill子线程

url 编码URL地址中,如果出现中文,时常会被编码。例如我在Google中输入天气预报,则会得到这样的一串url地址,https://www.google.com/search?&q=%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5&ie=UTF-8可以看到‘天气预报’这四个字被编码成了%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5,此处我们暂且将其称之为url编码好了。现在将要介绍的就是url编码与中文之间的转换方法 —— quote()/unquote()

>>> import urllib>>> raw = '天气预报'>>> raw'\xe5\xa4\xa9\xe6\xb0\x94\xe9\xa2\x84\xe6\x8a\xa5'>>> quoted_string = urllib.quote(raw) # urllib.quote()将中文转换成对应的编码字符串>>> print quoted_string%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5>>> normal_string = urllib.unquote(quoted_string) # urllib.unquote()将编码字符串转换成对应的中文>>> print normal_string>>> 天气预报

<!>需要注意的是,quoted_string不能是unicode类型,否则会出现乱码。它需要一个具体类型的字符串,所以在调用前需要调用type()对字符串的类型进行判断。如果是unicode类型,则需要调用str.encode(‘utf-8’)或str.encode(‘gbk’)或str.encode(‘gb2312’)将unicode串转换成为所需要的编码类型。靠近一点,URL编码的本质其实稍微细心一点的话,很容易可以看出上文中的URL编码其实和对应中文的utf-8编码在本质上是一样的,只是python中的utf-8编码以\x作为前缀,而url编码中以%作为前缀。所以简单来说,可以粗略地理解为url编码与中文互换其实就是一个把%与\x互换的过程。另外,URL编码也非只有utf-8这一种编码方式,同样也具有gbk等其他的编码方式,就看目标服务器的喜好了。谷歌和百度既支持utf-8也支持gbk,通常情况下只要直接在参数中使用中文对应的url编码即可,服务端将会尝试自动找到合适的方式解码。另外,谷歌中可以手动指明url的编解码方式—— ie={UTF-8, GBK, GB2312, …},如上文中提到的https://www.google.com/search?&q=%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5&ie=UTF-8,百度应该也是可以手动指定编解码方式,只是我目前还不知道具体是通过哪个参数控制。 Python kill threadpython中,如果万不得已需要终止某个子线程,则可以借助于multiprocessing来实现。不过这里还是需要再次申明,多数情况下,直接kill子线程不是太好的方案,如果允许还是尽量选择其他方式。否则子线程占用的资源可能不能得到正确的释放,导致程序最终崩溃。

import multiprocessingimport timedef loop_print(value):for i in range(value):print idef main():thread_loop_print = multiprocessing.Process(target=loop_print, args=(999)) # 设置线程具体方法thread_loop_print() # 启动线程time.sleep(3) # 睡三秒,三秒之后如果线程没有终止则终止线程if thread_loop_print() == True:thread_loop_print().terminate()print 'thread_loop_print killed'
[实践笔记] Python的URL编码与kill子线程

相关文章:

你感兴趣的文章:

标签云: