从文件名/字符串中删除非数字

时间:2019-01-18 22:50:34

标签: python python-3.x

假设我有大量文件,需要对其进行格式化以使应用程序可以更好地访问它们。

当前文件名可能如下所示:

035 - Springfield, MA.pdf

我的应用程序引用对象的方式是通过文件的前缀ID来实现的,因此我开始在下面着手批量重命名:

def rename(dir, pattern):
    import glob, os
    for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
        title, ext = os.path.splitext(os.path.basename(pathAndFilename))
        print(title)
        os.rename(pathAndFilename, 
            os.path.join(dir, % title + ext))

现在,我可以传递以下命令来重命名所有地图:

import scripts as a    
a.rename(r'c:\tools\storeMaps', r'*.pdf')

我希望文件名的输出仅是ID +映射,所以我知道我可以相当容易地加入map,但是在有效地从文件名中删除所有非数字时遇到了一些麻烦。

1 个答案:

答案 0 :(得分:0)

我发现re的喜悦解决了这个问题。

def rename(dir, pattern):
    import glob, os, re
    for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
        title, ext = os.path.splitext(os.path.basename(pathAndFilename))
        print(title)
        new_title = re.sub("\D", "", title)
        os.rename(pathAndFilename, 
            os.path.join(dir, new_title + ext))

new_title = re.sub("\D", "", title)将删除title中的所有非数字。