使用Python将文件名中的汉字序号改为阿拉伯数字序号

我拿到的视频是用汉字编的序号,不能按正常顺序播放,观看和查找都非常不方便,因此用Python将文件名中的汉字序号改为阿拉伯数字序号。第一步编写函数将汉字序号改为阿拉伯序号;第二步提取文件名中的汉字序号进行修改。

1 效果展示

先给大家看一下效果,修改前的视频序号如下第一幅图所示,顺序是乱的;修改后的效果如下第二幅图所示,顺序就正常了。

图1
在这里插入图片描述

2 汉字转数字函数

Talk is cheap, show me the code. (废话不说,放码过来)

Stop Trying to Reinvent the Wheel(不要重复造轮子)

如下代码主要参考Legend_353323321,Legend_35332332在文章讲述了如何将100以内,十万以内,一亿以内以及更大的汉字转换为阿拉伯数字。这里使用了他的“一百以内”的代码。

def number_c2e(chinese_number):
    """中文数字转整形"""
    map = dict(=0,=1,=2,=3,=4,=5,=6,=7,=8,=9,=10)
    size = len(chinese_number)
    if size == 0: return 0
    if size < 2:
        return map[chinese_number]

    ans = 0
    continue_flag = False  # 连续进两个的标志位
    for i in range(size):
        if continue_flag:
            continue_flag = False
            continue

        if i + 1 < size and chinese_number[i + 1] == '十':
            ans += map[chinese_number[i]] * 10
            continue_flag = True
            continue
        ans += map[chinese_number[i]]
    return ans

3 提取文件名中的汉字序号进行修改

2.1替换方法

使用正则把文件名中的汉字提取出来,然后用语句

new_txt = "第" + str(number) + end

生成新的文件名。

2.2获取目录全部文件名

使用os库,Listdir命令可以列出文件夹下所有的文件名

fileList = os.listdir(path)

完整代码如下:

import re
import Number_C2E
import os
# 请自行输入路径
path = r'xxxxxxxxxxxxx'


def chinese_name_to_number_name(txt):
    # \u8bfe是UNICODE码“课”
    # 如果是其他汉字,比如“章”、“节”需要用中文转Unicode工具链接放在最下方
    x = re.search("\u8bfe", txt)
    d = x.start()
    chinese = txt[1:d]
    number = Number_C2E.number_c2e(chinese)
    end = txt[d:]
    new_txt = "第" + str(number) + end
    return new_txt


# 获取该目录下所有文件,存入列表中
fileList = os.listdir(path)
print("fileList: ", fileList)
for name in fileList:
    OldName = path + os.sep + name
    NewName = path + os.sep + chinese_name_to_number_name(name)
    os.rename(OldName, NewName)  # 用os模块中的rename方法对文件改名
    print(OldName, '======>', NewName)

代码很简单我就不做过多解释了,如果又不懂的欢迎留言,我看到了会第一时间回复您的。

小结

使用以上代码可以将繁琐的工作瞬间完成,可以提高效率,值得大家借鉴。


  1. Python中文数字转阿拉伯数字
    https://www.jyshare.com/front-end/3602/ ↩︎

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ampare1987

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值