国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python用于url解碼和中文解析的小腳本(python url decoder)

2019-11-25 18:39:02
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

# -*- coding: utf8 -*-
#! python
print(repr("測試報警,xxxx是大豬頭".decode("UTF8").encode("GBK")).replace("http://x","%"))


注意第一個 decode("UTF8") 要與文件聲明的編碼一樣。

最開始對這個問題的接觸,來自于一個Javascript解謎闖關的小游戲,某一關的提示如下:

剛開始的幾關都是很簡單很簡單的哦~~這一關只是簡單的字符串變形而已…..

后面是一大長串開頭是%5Cu4e0b%5Cu4e00%5Cu5173%5Cu7684這樣的字符串。
這種東西以前經常在瀏覽器的地址欄見到,就是一直不知道怎么轉換成能看懂的東東,
網上google了一下,結合python的url解碼和unicode解碼,解決方式如下:

復制代碼 代碼如下:

import urllib escaped_str="%5Cu4e0b%5Cu4e00%5Cu5173%5Cu7684%5Cu9875%5Cu9762%5Cu540d%5Cu5b57%5Cu662f%5Cx20%5Cx69%5Cx32%5Cx6a%5Cx62%5Cx6a%5Cx33%5Cx69%5Cx34%5Cx62%5Cx62%5Cx35%5Cx34%5Cx62%5Cx35%5Cx32%5Cx69%5Cx62%5Cx33%5Cx2e%5Cx68%5Cx74%5Cx6d"
print urllib.unquote(escaped_str).decode('unicode-escape')

最近,我對firefox的autoproxy插件中的gfwlist中的中文詞匯(用過代理的同學們,你們懂的)產生了興趣,然而這些網址都是用url編碼的,比如http://zh.wikipedia.org/wiki/%E9%97%A8,需要使用正則表達式將被url編碼的中文字符提取出來,寫了個小腳本如下:

復制代碼 代碼如下:

import urllib
import re
with open("listfile","r") as f:
    for url_str in f:
        match=re.compile("((%/w{2}){3,})").findall(url_str)
        #漢字url編碼的樣式是:百分號+2個十六進制數,重復3次

        if match!=None:
            #如果匹配成功,則將提取出的部分轉換為中文
            for trans in match:
                print urllib.unquote(trans[0]),

然而這個腳本仍有一些缺點,對于列表文件中的某些中文字符仍然不能正常解碼,比如下面這幾行測試代碼

復制代碼 代碼如下:

import urllib
a="http://zh.wikipedia.org/wiki/%BD%F0%B6"
b="http://zh.wikipedia.org/wiki/%E9%97%A8"
de=urllib.unquote
print de(a),de(b)

輸出結果就是前者可以正確解碼,而后者不可以,個人覺得原因可能和big5編碼有關,如果誰知道什么解決辦法,還請告訴我一下~

以下是補充:

de(a).decode(“gbk”,”ignore”)
de(b).decode(“utf8″,”ignore”)

主站蜘蛛池模板: 西安市| 乌什县| 永安市| 凤城市| 西青区| 玉林市| 勃利县| 渝中区| 突泉县| 江西省| 唐海县| 望奎县| 平度市| 陈巴尔虎旗| 招远市| 遂昌县| 宜丰县| 顺义区| 交口县| 华容县| 奈曼旗| 福鼎市| 井研县| 佛学| 紫云| 手游| 石嘴山市| 汾阳市| 临猗县| 文化| 伊宁县| 元氏县| 原阳县| 磐安县| 临漳县| 土默特右旗| 会理县| 文昌市| 米易县| 南丹县| 邻水|