• 逻辑判断与正则表达式文本处理


    上一篇文章分享了正则表达式的操作,这一篇文章就让我们一起看看正则表达式逻辑判断结合起来会发生什么吧!感兴趣的小伙伴欢迎评论区或者是私信留言!

    一、题目描述:

    输入一个字符串,检查其是否为合法python变量输入$$$结束:

    1. 变量名必须以字母下划线开始
    2. 变量名中不能有空格标点符号(括号(大中小)、引号、逗号、斜线、反斜线、冒号、句号、问号)
    3. 不能使用关键字函数名等做变量名,定义若干个True False try exceptbreak sum min max all any等

    对于错误的给出建议:

    不符合1的,在变量名前加上一个随机生成的字母;

    不符合3的,在变量名最后面加一个随机生成的数字;

    不符合2的,将这些符号去除,若去除后,不符合前面两条则按前面两条处理。

     二、输出样例

     三、完整代码

    1. import random
    2. import re
    3. import string
    4. key_list = ["True","False","try","except","break","sum","min","max","all","any"]
    5. char_dx = [chr(i) for i in range(65, 91)]
    6. char_xx = [chr(i) for i in range(97, 123)]
    7. while True:
    8. input_str = input("请输入一个字符串:")
    9. if input_str == "$$$":
    10. break
    11. else:
    12. if input_str in key_list:
    13. print("建议改为:",input_str,random.randint(0,10),sep="")
    14. else:
    15. if input_str[0] != "_" and input_str[0] not in char_dx and input_str[0] not in char_xx:
    16. input_str = re.sub('[%s]' % re.escape(string.punctuation[:31:]), '', input_str)
    17. new_str = char_dx[random.randint(0,len(char_xx))]+input_str
    18. new_str = new_str.replace(" ","")
    19. print("建议改为:",new_str)
    20. else:
    21. if " " in list(input_str) or re.sub('[%s]' % re.escape(string.punctuation[:31:]), '', input_str) != input_str:
    22. input_str = input_str.replace(" ","")
    23. input_str = re.sub('[%s]' % re.escape(string.punctuation[:31:]), '', input_str)
    24. if input_str not in key_list:
    25. print("建议改为:",input_str)
    26. else:
    27. print("建议改为:",input_str,random.randint(0,10),sep="")
    28. else:
    29. print("合法")

    四、总结

    1. 首先要明确这是一个涉及到大量if else的逻辑题目,其中会涉及到正则表达式的字符匹配,关键词的判断,while的循环与退出机制,重复循环判断,random随机生成等知识。
    2. 首先根据输入
      $whileinputstr" role="presentation">$whileinputstr
      $时直接break结束循环。
    3. 如果不是$$$,则程序正常进行,进入下一个判断,即判断是否为关键词。再这之前,定义了一个关键词列表key_list = ["True","False","try","except","break","sum","min","max","all","any"],用in关键词判断即可,如果在这里面,则用random库随机添加一个0-10的数字。
    4. 如果不是关键词,则判断字符串开头是否为下划线或者字母,如果不是,取药在前面随机添加一个英文字母。
    5. 之后再判断变量名中是否有空格或标点符号(括号(大中小)、引号、逗号、斜线、反斜线、冒号、句号、问号)
    6. 如果有的话,用正则表达式剔除,再返回前面判断是否为关键词,全部检测合格的话,将最终字符串结构输出出来。
    7. 如果以上检测全部合格,那么最终输出“合法”,说明这是一个合法的字符串。
  • 相关阅读:
    【CS.SE】Tomcat启动闪退问题解决方法
    第一章初识Maven与Maven安装配置——尚硅谷
    K_A04_003 基于单片机驱动COG12864显示图片文字和字符串
    xshell配置保存OSMS堡垒机登录信息
    Javase.String 类
    【多线程面试题 六】、 如何实现线程同步?
    强化学习实践(二)Gym(安装、环境搭建、运行倒立摆(代码可运行))
    servlet生命周期
    三角定位是什么
    .NET Worker Service 作为 Windows 服务运行及优雅退出改进
  • 原文地址:https://blog.csdn.net/weixin_63866037/article/details/127846815