小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
  • 本文主要是使用Python做一些简单小工具,打印输出即可;
  • 本文涉及到的小工具有字符串大小写转换、字符串统计、编解码、MD5加密等等;
  • 文章内容通俗易懂,适合刚入门Python练习基础知识;
  • 文章中使用到了Python的标准输入输出、字符串基本操作、unittest框架基本使用、方法和类的使用等;
  • 写作思路是先大概介绍每个小工具的实现思路,然后写一点部分代码,最后会把所有小工具整合在一起运行。

字符串大小写转换

实现思路

  • 根据用户键盘输入的字符串来按照要求进行大小写转换;
  • 主要有大写转换成小写、小写转换成小写、大小写转换、首字母大写。

部分代码

  • 详细的代码后续会整合在一起,这里看下部分代码:

print('您选择的是1-字符串大小写转换,转换进行中~~~')
print(f"大写转换成小写:{self.s.lower()}")
print(f"小写转换成小写:{self.s.upper()}")
print(f"大小写转换:{self.s.swapcase()}")
print(f"首字母大写:{self.s.title()}")

字符串统计

实现思路

  • 根据输入的字符串,先判断一个字符是不是在该字符串中;
  • 然后判断该字符在字符串中出现的次数;
  • 去掉字符串左右空格;
  • 去掉字符串左边空格;
  • 去掉字符串右边空格。

部分代码:

def test_case2(self):
print('您选择的是2-字符串统计或计数,转换进行中~~~')
i = input('请输入要统计的字符:')
if i in self.s:
print(f"字符串统计:{self.s.count(i)}")
print(f"去掉字符串左右空格:{self.s.strip()}")
print(f"去掉字符串左边空格:{self.s.lstrip()}")
print(f"去掉字符串右边空格:{self.s.rstrip()}")
else:
print(f"您输入的字符:{i} 没有在字符串{self.s}中")

字符串编解码

实现思路

  • 根据输入字符串,将Unicode字符串转换为字节序列;
  • 将字节序列解码为Unicode字符串。

部分代码

def test_case3(self):
print('您选择的是3-字符串编码或解码,转换进行中~~~')
str_byte = self.s.encode('utf-8')
print(f"Unicode字符串转换为字节序列:{str_byte}")
print(f"将字节序列解码为Unicode字符串:{str_byte.decode('utf-8')}")

字符串MD5加密

实现思路

  • 根据输入的字符串进行简单的MD5加密。

部分代码

def test_case4(self):
print('您选择的是4-字符串MD5加密,转换进行中~~~')
md = hashlib.md5(self.s.encode())
md5_pass = md.hexdigest()
print(f"字符串{self.s}, md5直接加密后为:{md5_pass}")

小工具整体设计

设计思路

  • 先创建一个类,这个类继承于unittest框架的TestCase,目的是组织所有的用例;
  • 每个用例必须按照unittest框架的规则去写,比如函数开头必须为test等;
  • 每个用例其实就是一个小工具,这个用例中主要实现对应的小工具内容;
  • unittest框架的前置setUpClass处理小工具的开始信息,比如提示信息或者要输入的字符串;
  • unittest框架的后置tearDownClass处理小工具的结束信息,比如结束语等等;
  • 除了类中的方法外,还定义了一个主函数main()用来组织所有的用例执行;
  • 主函数main()中的用例执行逻辑按照unittest框架的suite、testcase、addTest、TextTestRunner方式去组织。
  • 最后就是调用main()函数即可。

工具完整代码实现

import unittest
import time
import hashlib


class TestToX(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        # cls.s = 'I like python, And you?'
        cls.s = input('请输入要转换的字符串:')
        print("开始进行转换,请稍等......")
        print("#" * 50)

    @classmethod
    def tearDownClass(cls) -> None:
        print("#" * 50)
        print("转换结束,欢迎使用~,工具运行中,您也可继续操作-----")

    def test_case1(self):
        print('您选择的是1-字符串大小写转换,转换进行中~~~')
        print(f"大写转换成小写:{self.s.lower()}")
        print(f"小写转换成小写:{self.s.upper()}")
        print(f"大小写转换:{self.s.swapcase()}")
        print(f"首字母大写:{self.s.title()}")

    def test_case2(self):
        print('您选择的是2-字符串统计或计数,转换进行中~~~')
        i = input('请输入要统计的字符:')
        if i in self.s:
            print(f"字符串统计:{self.s.count(i)}")
            print(f"去掉字符串左右空格:{self.s.strip()}")
            print(f"去掉字符串左边空格:{self.s.lstrip()}")
            print(f"去掉字符串右边空格:{self.s.rstrip()}")
        else:
            print(f"您输入的字符:{i} 没有在字符串{self.s}中")

    def test_case3(self):
        print('您选择的是3-字符串编码或解码,转换进行中~~~')
        str_byte = self.s.encode('utf-8')
        print(f"Unicode字符串转换为字节序列:{str_byte}")
        print(f"将字节序列解码为Unicode字符串:{str_byte.decode('utf-8')}")

    def test_case4(self):
        print('您选择的是4-字符串MD5加密,转换进行中~~~')
        md = hashlib.md5(self.s.encode())
        md5_pass = md.hexdigest()
        print(f"字符串{self.s}, md5直接加密后为:{md5_pass}")

def main():
    while True:
        print('== 1:字符串大小写转换 == \n'
              '== 2:字符串统计或计数 == \n'
              '== 3:字符串编码或解码 == \n'
              '== 4:字符串MD5加密   == \n')
        num = int(input('请根据以上提示按要求输入数字:'))
        suite = unittest.TestSuite()
        if num == 1:
            suite.addTest(TestToX('test_case1'))
            runner = unittest.TextTestRunner()
            runner.run(suite)
            time.sleep(0.8)
        elif num == 2:
            suite.addTest(TestToX('test_case2'))
            runner = unittest.TextTestRunner()
            runner.run(suite)
            time.sleep(0.8)
        elif num == 3:
            suite.addTest(TestToX('test_case3'))
            runner = unittest.TextTestRunner()
            runner.run(suite)
            time.sleep(0.8)
        elif num == 4:
            suite.addTest(TestToX('test_case4'))
            runner = unittest.TextTestRunner()
            runner.run(suite)
            time.sleep(0.8)
        else:
            print("输入有误~我们将运行所有的用例,请查阅...")
            unittest.main()


if __name__ == "__main__":
    main()

输出效果

  • 效果1:

== 1:字符串大小写转换 ==
== 2:字符串统计或计数 ==
== 3:字符串编码或解码 ==
== 4:字符串MD5加密 ==
请根据以上提示按要求输入数字:1
请输入要转换的字符串:I like python, And you?
开始进行转换,请稍等......

#

您选择的是1-字符串大小写转换,转换进行中~~~
大写转换成小写:i like python, and you?
小写转换成小写:I LIKE PYTHON, AND YOU?
大小写转换:i LIKE PYTHON, aND YOU?
首字母大写:I Like Python, And You?

#

转换结束,欢迎使用~,工具运行中,您也可继续操作-----

  • 效果2:

== 1:字符串大小写转换 ==
== 2:字符串统计或计数 ==
== 3:字符串编码或解码 ==
== 4:字符串MD5加密 ==

请根据以上提示按要求输入数字:2
请输入要转换的字符串:i like python
开始进行转换,请稍等......

#

您选择的是2-字符串统计或计数,转换进行中~~~
请输入要统计的字符:i
字符串统计:2
去掉字符串左右空格:i like python
去掉字符串左边空格:i like python
去掉字符串右边空格:i like python

#

转换结束,欢迎使用~,工具运行中,您也可继续操作-----

  • 效果3:

== 1:字符串大小写转换 ==
== 2:字符串统计或计数 ==
== 3:字符串编码或解码 ==
== 4:字符串MD5加密 ==

请根据以上提示按要求输入数字:3
请输入要转换的字符串:我有一个亿
开始进行转换,请稍等......

#

您选择的是3-字符串编码或解码,转换进行中~~~
Unicode字符串转换为字节序列:b'\xe6\x88\x91\xe6\x9c\x89\xe4\xb8\x80\xe4\xb8\xaa\xe4\xba\xbf'
将字节序列解码为Unicode字符串:我有一个亿

#

转换结束,欢迎使用~,工具运行中,您也可继续操作-----

  • 效果4:

== 1:字符串大小写转换 ==
== 2:字符串统计或计数 ==
== 3:字符串编码或解码 ==
== 4:字符串MD5加密 ==

请根据以上提示按要求输入数字:4
请输入要转换的字符串:123456
开始进行转换,请稍等......

#

您选择的是4-字符串MD5加密,转换进行中~~~
字符串123456, md5直接加密后为:e10adc3949ba59abbe56e057f20f883e

#

转换结束,欢迎使用~,工具运行中,您也可继续操作-----

总结

本文是使用Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密,简单容易理解,适合入门Python基础练习。可能需要对一些基础知识要简单看下。建议学习的时候,不局限于上边的示例,可以自己新增的一些示例,比如MD5加密的时候,也可以增加一些用户名和密码组合MD5加密、密码使用MD5+盐加密、MD5加盐后将密码整体插入盐中、SHA1加密、SHA256加密、HMAC加密等等。

目录
相关文章
|
30天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
1月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
30 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
26天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
37 3
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
41 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
数据安全/隐私保护 Python
python学习十一:python常用模块使用,如 加密模块pyarmor,时间模块time等
这篇文章介绍了Python中两个常用模块的使用:加密模块pyarmor用于保护代码,以及时间模块time用于处理时间相关的功能。
74 0
|
1月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
|
4天前
|
SQL 安全 算法
揭秘网络安全:漏洞、加密与安全意识的三重奏
【10月更文挑战第39天】在数字时代的交响乐中,网络安全扮演着不可或缺的角色。本文旨在通过浅显易懂的语言,揭示网络安全的三大核心要素:网络漏洞、加密技术以及安全意识。我们将探索这些元素如何相互交织,共同维护我们的数字安全。从初学者到资深专家,每个人都能从中获得宝贵的知识和启示。
|
4天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
14 2
|
6天前
|
安全 算法 网络安全
网络安全的盾牌与利剑:漏洞防御与加密技术的双刃舞
【10月更文挑战第37天】在数字世界的海洋里,网络安全是航船的锚,保护我们的数据不受风暴侵袭。本文将深入浅出地探讨网络安全的两大支柱——漏洞防御和加密技术。我们将从网络安全的基本概念出发,逐步深入到漏洞的类型、检测方法以及防御策略。同时,我们也将探索加密技术的原理和应用,如何通过这一技术保护信息的完整性和私密性。最后,我们将讨论提升个人及组织安全意识的重要性,以及如何构建一个安全的网络环境。这不仅是技术人员的战斗,每个人都是自己信息安全的第一道防线。让我们一起扬帆起航,探索网络安全的世界,学习如何成为自己数据的守护者。