简易url解码器(定义python单行函数工具)

被%编码的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 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


被%编码的url如同天书
简易url解码器
(自拟一个单行函数解析还原)


本文质量分:

97 97 97

本文地址: 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_urldecode_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篇。

  1. 让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)

  2. 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)

  3. 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)

  4. 个人信息提取(字符串)
    地址: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)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址: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)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址: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)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及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规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34309.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)

前言 我们想要部署一个javaWeb项目到tomcat上,需要了解一些概念 什么是tomcat? Tomcat 是 Apache 软件基金会(Apache Software Foundation)下的一个开源项目,主要用于实现 Java Servlet、JavaServer Pages(…

【笔记2-5】ESP32:freertos消息队列

主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发…

亚马逊云科技大语言模型加速OCR应用场景发展

目录 前言Amazon Bedrock关于OCR解决方案Amazon Bedrock进行OCR关键信息提取方案注册亚马逊账号API调用环境搭建 总结 前言 大语言模型是一种基于神经网络的自然语言处理技术,它能够学习和预测自然语言文本中的规律和模式,可以理解和生成自然语言的人工…

贪心算法 part03

文章参考来源代码随想录 134. 加油站 方法一分类讨论: 情况一:如果gas的总和小于cost总和,那么无论从哪里出发,一定是跑不了一圈的 情况二:rest[i] gas[i]-cost[i]为一天剩下的油,i从0开始计算累加到最…

【JAVA练习】力扣860.柠檬水找零

题目: 解题思路: 可能面临3种面额, 5美元,不找还,5美元钞票数量加110美元,找还5美元,5美元钞票数量减1,10美元钞票加120美元,找还15美元,分为一张10美元 一…

Telnet不安全?如何配置使用更安全的STelnet远程登录华为AR1000V路由器?

在上一篇文章中,我们介绍了如何配置一台全新的AR1000V,来实现通过Telnet远程登录设备(如何配置使用Telnet远程登录华为AR1000V路由器?)。其实,在之前的文章中,我们已经介绍过Telnet是一种不安全…

UE----Ios打包笔记

UE 打包 IOS 软件 1.前期准备 1.1. 首先我们需要 一台装有Xcode 的MAC笔记本(知道开机密码 最好是空的笔记本 剩余内存要大 ) 1.2. 一台IOS手机 1.3. 一个申请了开发者账户的 Apple ID (苹果账号) 知晓账号与密码最好 因为很麻烦 1.4. UE 需要 的 兼…

计算机毕业设计Python轨道交通客流预测分析可视化 智慧交通 机器学习 深度学习 人工智能 爬虫 交通大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

windows10电脑缺少dll文件的解决方案,系统缺少dll修复指南

在使用Windows 10操作系统时,有时会遇到由于缺少某些动态链接库(Dynamic Link Library, 简称DLL)文件而导致程序无法正常运行的问题。本指南将介绍几种解决此类问题的方法。 什么是DLL文件? DLL文件是Windows系统中的一种特殊类型…

并发编程(15)——基于同步方式的线程安全的栈和队列

文章目录 十四、day141. 线程安全的栈1.1 存在隐患的栈容器1.2 优化后的栈容器 2. 线程安全的队列2.1 基于智能指针的线程安全的队列2.2 不同互斥量管理队首、队尾的队列 十四、day14 在并发编程(1)并发编程(5)中,我们…

装箱问题的三种解法

有一个箱子容量为V&#xff08;正整数&#xff0c;0≤v≤20000&#xff09;&#xff0c;同时有n个物品&#xff08;0< n ≤30&#xff09;&#xff0c;每个物品有一个体积&#xff08;正整数&#xff09;。 要求n个物品中&#xff0c;任取若干个装入箱内&#xff0c;使箱子的…

万物可爬(以爬取浏览器井盖图片为例)

我们以爬取 井盖图片 这个链接中的图片为例&#xff1a; 点击F12 并选中其中一张图片 &#xff0c;得到它的信息。具体如下&#xff1a;我们可以编写对应的正则表达式&#xff1a; <img[^>]*src"(.*?)"[^>]*alt"井盖图片 的图像结果"[^>]*&g…

【AI系统】轻量级CNN模型新进展

CNN 模型小型化&#xff08;下&#xff09; 在本文会接着介绍 CNN 模型的小型化&#xff0c;除了第二篇文章提到的三个模型外&#xff0c;在本章节会继续介绍 ESPNet 系列&#xff0c;FBNet 系列&#xff0c;EfficientNet 系列和 GhostNet 系列。 ESPNet 系列 ESPNetV1 ESP…

Day06:缓存持久化

缓存持久化 redis做为缓存&#xff0c;数据的持久化是怎么做的&#xff1f; 在Redis中提供了两种数据持久化的方式&#xff1a;1、RDB 2、AOF 方式一&#xff1a;RDB RDB(Redis Database Backup file)&#xff0c;redis数据备份文件&#xff0c;也叫Redis数据快照&#xff…

msvcr100.dll 文件缺失要怎么解决?msvcr100.dll的多少修复方法分析

面对 msvcr100.dll 文件缺失引发的应用程序运行问题&#xff0c;实际上解决方案并不复杂。本文将提供几种直接有效的修复方法&#xff0c;帮助你迅速恢复文件完整性&#xff0c;确保应用程序能够顺利运行&#xff0c;从而轻松克服这一技术障碍。 一.msvcr100.dll主要特性和功能…

【机器学习】机器学习的基本分类-监督学习-梯度提升树(Gradient Boosting Decision Tree, GBDT)

梯度提升树是一种基于**梯度提升&#xff08;Gradient Boosting&#xff09;**框架的机器学习算法&#xff0c;通过构建多个决策树并利用每棵树拟合前一棵树的残差来逐步优化模型。 1. 核心思想 Boosting&#xff1a;通过逐步调整模型&#xff0c;使后续的模型重点学习前一阶段…

什么是CMMI

CMMI的定义与目的 CMMI&#xff08;Capability Maturity Model Integration&#xff0c;即能力成熟度模型集成模型&#xff09;是一种用于评估和改进组织在软件开发、系统集成、项目管理等方面过程能力的框架。它旨在帮助组织识别其当前的过程能力水平&#xff0c;并提供一个路…

MySQL 入门大全:常用函数

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

动态风景构图技巧和方法

拍摄时要有耐心 当遇到绝佳的拍摄场景时&#xff0c;要放慢脚步&#xff0c;慢慢来&#xff0c;给自己时间去感受它。可能会有一个显而易见的构图方式&#xff0c;你可以先按这个方式拍摄&#xff0c;但随后也要花点时间找找其他可能的构图。 光线会直接影响构图&#xff0c;…

RabbitMq死信队列延迟交换机

架构图 配置 package com.example.demo.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class DeadLetterConfig {public String …