Python中還原JavaScript的escape函數(shù)編碼后字符串的方法
更新時(shí)間:2014年08月22日 09:30:11 投稿:junjie
這篇文章主要介紹了Python中解析JavaScript的escape函數(shù)編碼后字符串的方法,即Python中如何還原JavaScript escape函數(shù)編碼后的字符串,需要的朋友可以參考下
遇到一個(gè)問題需要用Python把JavaScript中escape的中文給還原,但找了大半天,也沒有找到答案,只好自己深入研究解決方案。
我們先來看在js中escape一段文字的編碼
復(fù)制代碼 代碼如下:
a = escape('這是一串文字');
alert(a);
輸出:
復(fù)制代碼 代碼如下:
%u8FD9%u662F%u4E00%u4E32%u6587%u5B57
咋一看,就感覺有點(diǎn)類似json格式,我們來看看標(biāo)準(zhǔn)的json格式編碼同樣的漢子“這是一串文字”
復(fù)制代碼 代碼如下:
# encoding=utf-8
import json
a = '這是一串文字'
print json.dumps(a)
輸出:
復(fù)制代碼 代碼如下:
"\u8fd9\u662f\u4e00\u4e32\u6587\u5b57"
經(jīng)過對(duì)比,其實(shí)就是js escape編碼每個(gè)漢子都是“%u”符號(hào)加4位字符編碼,而json編碼每個(gè)漢子都是“\u”符號(hào)加4位字符編碼,這樣的話,我們可以利用字符串替換操作還原json格式,然后再使用json模塊loads就好
復(fù)制代碼 代碼如下:
# encoding=utf-8
import json
# js escape 字符串編碼
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
# 還原Json對(duì)象
jsonObj = '"'+"".join([(i and "\\"+i) for i in c.split('%')])+'"'
print json.loads(jsonObj)
特別記得在把“%”替換為“\”符號(hào)以后還要再使用雙引號(hào)把字符串包一下,才能算是一個(gè)json對(duì)象,然后才能json.loads出來
后來,好不容易在一個(gè)站點(diǎn)上看到了更簡(jiǎn)便的方法。代碼如下:
復(fù)制代碼 代碼如下:
# encoding=utf-8
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
print "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in c.split('%u')])
它的思路其實(shí)都差不多,把“%u”號(hào)替換掉,剩下每一個(gè)都是4位固定長(zhǎng)度的字符編碼,最后在unichr反編碼回中文字符。
您可能感興趣的文章:
- python使用chardet判斷字符串編碼的方法
- Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
- Python中的字符串操作和編碼Unicode詳解
- python字符串與url編碼的轉(zhuǎn)換實(shí)例
- 詳解Python當(dāng)中的字符串和編碼
- Python判斷文件和字符串編碼類型的實(shí)例
- python判斷字符串編碼的簡(jiǎn)單實(shí)現(xiàn)方法(使用chardet)
- 淺談python下含中文字符串正則表達(dá)式的編碼問題
- python字符串編碼識(shí)別模塊chardet簡(jiǎn)單應(yīng)用
- python中字符串的編碼與解碼詳析
相關(guān)文章
python調(diào)用opencv實(shí)現(xiàn)貓臉檢測(cè)功能
這篇文章主要介紹了python調(diào)用opencv實(shí)現(xiàn)貓臉檢測(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Python3 xml.etree.ElementTree支持的XPath語法詳解
這篇文章主要介紹了Python3 xml.etree.ElementTree支持的XPath語法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python繪制分段函數(shù)的實(shí)現(xiàn)示例
本文主要介紹了Python繪制分段函數(shù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Python中內(nèi)置函數(shù)filter函數(shù)用法詳解
filter()函數(shù)是Python內(nèi)置的另一個(gè)有用的高階函數(shù),filter()函數(shù)接收一個(gè)函數(shù)f和一個(gè)序列,函數(shù)f的作用是對(duì)每個(gè)元素進(jìn)行判斷,返回True或False,下面這篇文章主要給大家介紹了關(guān)于Python中內(nèi)置函數(shù)filter函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2024-05-05
django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解
這篇文章主要介紹了django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
在?Python?中使用變量創(chuàng)建文件名的方法
這篇文章主要介紹了在?Python?中使用變量創(chuàng)建文件名,格式化的字符串文字使我們能夠通過在字符串前面加上 f 來在字符串中包含表達(dá)式和變量,本文給大家詳細(xì)講解,需要的朋友可以參考下2023-03-03

