Python中还原JavaScript的escape函数编码后字符串的方法

 更新时间:2014年08月22日 09:30:11   投稿:junjie  
这篇文章主要介绍了Python中解析JavaScript的escape函数编码后字符串的方法,即Python中如何还原JavaScript escape函数编码后的字符串,需要的朋友可以参考下

遇到一个问题需要用Python把JavaScript中escape的中文给还原,但找了大半天,也没有找到答案,只好自己深入研究解决方案。
我们先来看在js中escape一段文字的编码

复制代码 代码如下:

a = escape('这是一串文字');
alert(a);

输出:
复制代码 代码如下:

%u8FD9%u662F%u4E00%u4E32%u6587%u5B57

咋一看,就感觉有点类似json格式,我们来看看标准的json格式编码同样的汉子“这是一串文字”
复制代码 代码如下:

# encoding=utf-8
import json
a = '这是一串文字'
print json.dumps(a)

输出:
复制代码 代码如下:
"\u8fd9\u662f\u4e00\u4e32\u6587\u5b57"

经过对比,其实就是js escape编码每个汉子都是“%u”符号加4位字符编码,而json编码每个汉子都是“\u”符号加4位字符编码,这样的话,我们可以利用字符串替换操作还原json格式,然后再使用json模块loads就好
复制代码 代码如下:

# encoding=utf-8
import json
 
# js escape 字符串编码
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
 
# 还原Json对象
jsonObj =  '"'+"".join([(i and "\\"+i) for i in c.split('%')])+'"'
 
print json.loads(jsonObj)

特别记得在把“%”替换为“\”符号以后还要再使用双引号把字符串包一下,才能算是一个json对象,然后才能json.loads出来
后来,好不容易在一个站点上看到了更简便的方法。代码如下:
复制代码 代码如下:

# 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')])

它的思路其实都差不多,把“%u”号替换掉,剩下每一个都是4位固定长度的字符编码,最后在unichr反编码回中文字符。

相关文章

  • Python实现提取JSON文件中指定数据并保存至CSV或Excel内

    Python实现提取JSON文件中指定数据并保存至CSV或Excel内

    这篇文章主要介绍了如何基于Python语言实现读取JSON格式的数据,并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中,感兴趣的小伙伴可以了解下
    2023-08-08
  • python opencv minAreaRect 生成最小外接矩形的方法

    python opencv minAreaRect 生成最小外接矩形的方法

    这篇文章主要介绍了python opencv minAreaRect 生成最小外接矩形的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • 在Python中使用sort()方法进行排序的简单教程

    在Python中使用sort()方法进行排序的简单教程

    这篇文章主要介绍了在Python中使用sort()方法进行排序的简单教程,是Python学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 如何获取numpy array前N个最大值

    如何获取numpy array前N个最大值

    这篇文章主要介绍了获取numpy array前N个最大值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 在Django中实现定时任务的多种方法

    在Django中实现定时任务的多种方法

    在 Django 项目中实现定时任务可以帮助自动化执行一些后台任务,如数据清理、定期报告生成等,以下是几种常见的实现方式,每种方法都有其独特的优势和适用场景,感兴趣的小伙伴跟着小编一起来看看吧
    2024-08-08
  • Python变量和数据类型和数据类型的转换

    Python变量和数据类型和数据类型的转换

    这篇文章主要介绍了Python变量和数据类型和数据类型的转换,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Django返回HTML文件的实现方法

    Django返回HTML文件的实现方法

    这篇文章主要介绍了Django返回HTML文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python简单实现整数反转的画解算法

    python简单实现整数反转的画解算法

    这篇文章主要介绍了python简单实现整数反转采用了一个有趣的画解算法,通过示例的题目描述来对问题分析进行方案的解决,有需要的朋友可以参考下
    2021-08-08
  • Python替换月份为英文缩写的实现方法

    Python替换月份为英文缩写的实现方法

    今天小编就为大家分享一篇Python替换月份为英文缩写的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Pytorch 使用Google Colab训练神经网络深度学习

    Pytorch 使用Google Colab训练神经网络深度学习

    本文以VOC数据集为例,因此在训练的时候没有修改classes_path等,如果是训练自己的数据集,各位一定要注意修改classes_path等其它参数
    2022-04-04

最新评论