我拿到的视频是用汉字编的序号,不能按正常顺序播放,观看和查找都非常不方便,因此用Python将文件名中的汉字序号改为阿拉伯数字序号。第一步编写函数将汉字序号改为阿拉伯序号;第二步提取文件名中的汉字序号进行修改。
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)
代码很简单我就不做过多解释了,如果又不懂的欢迎留言,我看到了会第一时间回复您的。
小结
使用以上代码可以将繁琐的工作瞬间完成,可以提高效率,值得大家借鉴。
Python中文数字转阿拉伯数字
https://www.jyshare.com/front-end/3602/ ↩︎