被%编码的url如同天书,自拟一个单行函数解析还原,方便相认。
(笔记模板由python脚本于2024年12月05日 15:14:17创建,本篇笔记适合学习Url的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室
本文质量分:
本文地址: https://blog.csdn.net/m0_57158496/article/details/144267801
CSDN质量分查询入口:http://www.csdn.net/qc
- ◆ 简易url解码器(python
- 1、单行函数encode_url
- 2、说明文档
- 2.1 概述
- 2.2 功能
- 2.3 参数
- 2.4 返回值
- 2.5 示例
- 2.6 注意事项
- 3、花絮
- 4、完善/浓缩
◆ 简易url解码器(python
仔细阅读url字符串,发现好多百分号%
间杂其中。%
是url编码标志符,一般是两位16位大写字母(两位十六进制字符可以表示所有的ASCII码)。
源于此,我将url字符串用str.split('%)
拆分去除%
,列表中的元素如果前一个字符是十六进制字符char[0] in tuple('0123456789ABCDEF')
,就将相邻的两个字符视为被编码的十六进制数进行还原chr(int('xx', 16))
。
这种方式是比较安全的,只有拆分列表的第一个元素前原本不会有%
,但它一般以h
开头,被十六进制字符排除在外,就完全规避了被误搞。😋
1、单行函数encode_url
-
python代码
#!/usr/bin/env python3encode_url = lambda url: ''.join([chr(int(char[:2], 16))+char[2:] if char[0].upper() in '0123456789ABCDF' else char for char in url.split('%')])url = 'https://blog.csdn.net/m0_57158496?csdn_share_tail=%7B%22type%22%3A%22ask%22,%22rType%22%3A%22question%22,%22rId%22%3A%228166844%22,%22source%22%3A%22m0_57158496%22%7D' print(f"\n{url = }"f"\n解码:"f"\n{encode_url(url) = }")
这段代码是一个简易的URL解码器。URL编码通常用于在URL中嵌入特殊字符,这些字符在URL中可能无法直接使用。你的解码器尝试将URL中的每个编码部分(以百分号%开头,后跟两位十六进制数)转换回原始字符。
效果截屏图片
2、说明文档
encode_url函数说明文档:
2.1 概述
encode_url
是一个用于解码URL编码字符串的函数。它将URL中的十六进制编码部分转换回原始字符。
2.2 功能
- 将URL中的每个以百分号
%
开头的编码部分解码。 - 将十六进制编码转换为对应的ASCII字符。
2.3 参数
url
(str):需要解码的URL字符串。
2.4 返回值
- 返回解码后的URL字符串。
2.5 示例
代码
url = 'https://blog.csdn.net/m0_57158496?csdn_share_tail=%7B%22type%22%3A%22ask%22,%22rType%22%3A%22question%22,%22rId%22%3A%228166844%22,%22source%22%3A%22m0_57158496%22%7D' decoded_url = encode_url(url) print(decoded_url)
输出:
https://blog.csdn.net/m0_57158496?csdn_share_tail={“type”:“ask”,“rType”:“question”,“rId”:“8166844”,“source”:“m0_57158496”}
2.6 注意事项
- 该函数假设输入的URL是正确编码的,并且每个编码部分都是两个十六进制数字。
- 如果URL中包含非十六进制编码的字符,这些字符将不会被解码。
- 该函数不处理URL编码的所有复杂情况,例如字符集转换或特殊字符处理。
*emsp; 仔细阅读这个说明文档能帮助你更好地理解和使用 encode_url
函数。😊
3、花絮
对方截屏
ai学伴帮我“捉虫”(Findall bug)。
4、完善/浓缩
本文前面的代码解码相对片面,连函数名都整成了“编码”encode_url
,应该decode_url
才好。😭😭
不过,在和ai学伴不断拆解的过程中,我完成了“完美”全功能的解码decode_url,还挑战成功ai学伴“保留空格%20
”的提议。
我将两个成功单行贴于此,以供您玩耍,如需深度了解,请移步下一篇笔记全能单行解码url。
decode_url
和decode_url_20
#!/usr/bin/env python3decode_url = lambda url: ''.join([f"{chr(int(char[:2], 16))}{char[2:]}" if (len(char) > 1) and (char[0].upper() in '0123456789ABCDEF') and (char[1].upper() in '0123456789ABCDEF') else f"%{char}" if k != 0 else char for k,char in enumerate(url.split('%'))])decode_url_20 = lambda url: ''.join([f"{chr(int(char[:2], 16))}{char[2:]}" if (len(char) > 1) and (char[0].upper() in '0123456789ABCDEF') and (char[1].upper() in '0123456789ABCDEF') and (char[:2] != '20') else f"%{char}" if k != 0 else char for k,char in enumerate(url.split('%'))])url = 'https://blog.csdn.net/m0_57158496?csdn_share_tail=%7B%22type%22%3A%22ask%22,%22rType%22%3A%22question%22,%22rId%22%3A%228166844%22,%22source%22%3A%22m0_57158496%22%7D'
url = '【Microi吾码低代码平台:高效便捷的生成与管理全能助手 - CSDN App】https://blog.csdn.net/Zero_VPN/article/details/144242444?%20sharetype=blog&shareId=144242444&sharerefer=APP&sharesource=m0_57158496%20&sharefrom=link'
print(f"\n{url = }"f"\n解码:"f"\n{decode_url(url) = }")print(f"\n解码(保留空格%20):"f"\n{decode_url_20(url) = }")
效果截屏
我将两个成功单行贴于此,以供您玩耍,如需深度了解,请移步下一篇笔记全能单行解码url。
上一篇: python数组增加元素(append、appext、insert,在某位置插入insert最在行)
下一篇:
我的HOT博:
本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:6.2w
点赞:25 收藏:89 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
- Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:1.3w
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
- pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:1.0w
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
- 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:1.0w
点赞:3 收藏:20
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
- 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8.2k
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
- 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8.1k
点赞:5 收藏:24
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
- Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8.0k
点赞:1 收藏:12 评论:1
- 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6.7k
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
- python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6.1k
点赞:1 收藏:10
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)
精品文章:
- 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代码编写规范
- Python的docstring规范(说明文档的规范写法)