大数据 爬虫Python AI Sqlpython自学

url中文转码过种记录

2018-07-19  本文已影响4人  Stevent

最近在储存url时,遇到中文被转码了,因此想转回来,结果折腾好久,记录下。

尝试

一串字符,用在线unicode转中文,结果还是不对.
原内容:

%5B9500%5D%5B552e%5D%5B6307%5D%5B6807%5D%5B5b8c%5D%5B6210%5D%5B7387%5D111
%5B8d39%5D%5B7528%5D%5B989d%5D%5B5ea6%5D%5B67e5%5D%5B8be2%5D

转后:

[9500][552e][6307][6807][5b8c][6210][7387]111
[8d39][7528][989d][5ea6][67e5][8be2]

心想这是什么东西?
难道就这样失败了?
仔细看看内容,四个字,四个字的,是不是有点像unicode?可是中括号是什么鬼?

试着拿一个数试试,\u9500.

转码前.png
转码后.png

果然,不是巧合,真的就是unicode, 可是这么多括号,手动是不可能的。

怎么才能去除括号并且换上\u呢?

当然首选是pyhton, 上代码:

# coding=utf-8
from urllib import parse
import re


def _change(matched):
    if matched.group(0) == "[":
        return '\\u'
    else:
        return ''


def url_de(x):
    '''对URL进行解码'''
    replaceStr = re.sub(
        r'([\[|\]])', _change, parse.unquote(x))
    return replaceStr



x = '''
%5B9500%5D%5B552e%5D%5B6307%5D%5B6807%5D%5B5b8c%5D%5B6210%5D%5B7387%5D111
%5B8d39%5D%5B7528%5D%5B989d%5D%5B5ea6%5D%5B67e5%5D%5B8be2%5D
'''

print(url_de(x))

首先,我们引入要用的包,这里主要是两个包,parse用来做第一遍转码,转成带括号的形式。然后使用re.sub对括号进行替换和消除。
输出:


第一次转码.png

其实应该有方法再转一次输出中文的,可是没找到方法。只能用笨办法了,复制输出的内容到在线unicode转中文。


转码.png

成功了,原来是这样。


中文.png

有哪位知道直接转出中文的,请告诉我,不胜感激。

上一篇 下一篇

猜你喜欢

热点阅读