去掉文件名中的特殊符号及中文

该博客介绍了如何使用Python代码来处理深度学习数据集中的文件名,去除包含的特殊符号和中文字符,仅保留数字、字母和下划线。通过正则表达式和os模块,对文件进行重命名,确保文件名只包含基本字符,并在遇到全大写后缀时将其转换为小写。这对于保持数据集的一致性和规范性至关重要。
摘要由CSDN通过智能技术生成

文章目录


做深度学习算法收集数据时,来源各种各样,导至文件名混有各种特殊符号,所在这里有一段代码,可以把文件名进行处理,只保留数字、字母和下划线,然后对文件进行重命名。

import os
import re
import random
import string 
from glob import glob 
from tqdm import tqdm 
def convert_filename(file_lists):
    """_summary_

    Args:
        file_lists (list ): file abs or relative path list 
    """
    
    for file  in tqdm(file_lists):
        basepath = os.path.dirname(file)
        basename = os.path.basename(file)
        name,suffix = os.path.splitext(basename)
        
        if len(re.findall('[\W\u4e00-\u9fa5]',name)): #中文及除数字字母下划线的符号
            newname = re.sub('[\W\u4e00-\u9fa5]','',name) # 这些特殊符号全部被删除
            if len(newname)==0: #所有符号全部都是特殊的,除去之后没有了,那就随机生成一个
                length=random.randint(3,10)
                letters = string.ascii_lowercase
                newname = ''.join(random.choice(letters) for i in range(length))
            newfilename=newname+suffix
            if newfilename.isupper(): #把文件名及后缀全部改成写,在图片中有jpg,又有JPG直的烦
                newfilename=newfilename.lower()
            print(f"old:{basename} new:{newfilename}")
            newpath = os.path.join(basepath,newfilename)
            os.rename(file,newpath)
        else:
            continue
fs = glob("data/*.jpg")
convert_filename(fs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值