首页 > 系统相关 >【Python】模拟windows文件名排序(自动处理文件名中有数字类型排序)

【Python】模拟windows文件名排序(自动处理文件名中有数字类型排序)

时间:2024-05-13 11:43:54浏览次数:18  
标签:文件名 Python res value flag digital 排序 ascii

实现了一种模拟windows排序的python方法,其排序规则为:

  • 不处理浮点数
  • 特殊字符(如:&、$、# 等)排在数字和字母之前;
  • 数字优先于字母排序;
  • 数字是连着的整数,应该按照整数进行排序;
  • 小写字母排在大写字母前面;
  • 英文字符按字母表顺序排序;
 
def custom_sort_key(str_value):
    digital_res = ""
    digital_flag = False
    sort_list = []
    rank_value = []
    for c in str_value:
        c_ascii = ord(c)
        if c_ascii <= 57 and c_ascii >= 48:
            digital_flag = True
            digital_res += c
        else:
            if digital_flag:
                digital_res = int(digital_res)
                rank_value.append((1, digital_res))
                digital_res = ""
                digital_flag = False
            if c_ascii <= 47 or (c_ascii >= 58 and c_ascii <= 64) or (c_ascii >= 91 and c_ascii <= 96) or c_ascii >= 123:
                # special char
                rank_value.append((0, c_ascii))
            elif c_ascii >= 97 and c_ascii <= 122:
                rank_value.append((2, c_ascii))
            elif c_ascii >= 65 and c_ascii <= 90:
                rank_value.append((3, c_ascii))
 
            sort_list.extend(rank_value)
            rank_value = []
 
    return sort_list
 
root_path = r"./path"
image_names = os.path.listdir(root_path )
image_names = sorted(image_names, key=custom_sort_key)
print(image_names)

 

 

标签:文件名,Python,res,value,flag,digital,排序,ascii
From: https://www.cnblogs.com/waw/p/18188899

相关文章

  • 推荐几款火爆的Python在线编辑器
    在当今数字化时代,编程已成为一项不可或缺的技能。Python作为一种简单易学且功能强大的编程语言,受到了广大编程爱好者和专业开发人员的青睐。为了方便大家随时随地编写和运行Python代码,市面上涌现了许多优秀的在线Python编辑器。本文将为您推荐几款目前非常火爆的Python在线编辑器......
  • 第十二届蓝桥杯选拔赛 python
    第一题(难度系数2,18个计分点) 编程实现:输入一个正整数n,计算出n乘100的积。 输入描述:输入一个正整数n输出描述:输出n乘100的积 样例输入:2样例输出:200  第二题(难度系数3,20个计分点) 编程实现:给定一个正整数,判断这个正整......
  • python 基本日期和时间类型 datetime
    datetime说明datetime模块提供了处理日期和时间的类。它可以帮助你执行日期和时间的计算、转换以及格式化等操作。模块包含了日期(date)、时间(time)、日期时间(datetime)、时间间隔(timedelta)、时区(tzinfo)等类。datetime类:用于操作日期和时间的类,包括年、月、日、时、分、秒等信息......
  • HTML5 参考手册(字母排序)
    标签描述<!--...-->定义注释<!DOCTYPE>定义文档类型<a>定义超文本链接<abbr>定义缩写<acronym>定义只取首字母的缩写,不支持HTML5<address>定义文档作者或拥有者的联系信息<applet>HTML5中不赞成使用。定义嵌入的applet。<area>定义图像映......
  • 新版FLASK下python内存马的研究
    新版FLASK下python内存马的研究风起2月中旬的某一天,跟@Ic4_F1ame无聊时聊起了出题的事。当时是打算出道python题目(菜......
  • 【Python】保存gym截图
    如果想做基于图像cnn的深度强化学习,需要拿到gym的截图,下面是两种截图方法。1.利用render结果生成图像:importgymimportwarningsimportosfromPILimportImagewarnings.filterwarnings("ignore")ifos.path.exists('img')==False:os.mkdir('img')env=gym.ma......
  • python教程13-异常处理
    异常处理流程:流程示例: 抛出异常自定义异常 ......
  • kombu & celery:如何在Python中舒适地使用消息队列
    Kombu和Celery是Python中的两个库,它们可分开或结合起来使用,以实现基于分布式消息传递的异步任务队列。KombuKombu是一个Python消息库,它为多种消息队列提供了抽象和统一的使用方式。它支持AMQP协议的消息队列服务,如RabbitMQ和Redis,以及其他一些通过插件实现的传输方......
  • python教程12-面向对象进阶
    1、classmethod类方法类方法只能访问类变量,不能访问实例变量2、staticmethod静态方法不能访问类变量,也不能访问实例变量。除非在实例调用时给方法传实例。3、反射1-判断对象是否有属性的情况用法: 实例: __name__,模块被其他模块导入的时候调用,是你叫的名字。模块自己主......
  • 梦熊四月 csp-s 模拟赛2 T2 排序
    小B想要对一个长为\(n\)的序列\(A\)排序。已知\(A\)中只包含\(0,1,\cdots,n-1\)且对任意\(i\nej\)有\(A_i\neA_j\)且\(n\)为\(2\)的次幂。为了排序,小B只想用以下两种操作:交换相邻的两个位置,也就是说选择\(1\lei\len-1\)并且交换\(A_i,A_{i+1}\)。......