Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何整理这个文件名?_Python_Indexing - Fatal编程技术网

Python 如何整理这个文件名?

Python 如何整理这个文件名?,python,indexing,Python,Indexing,我知道有更好的方法,但我不知道是什么。我正在整理一个文件列表,我想删除“通常的嫌疑犯”,这样我可以比较一个列表和另一个列表 根据我的理解,name.replace()查看列表中的每一项,以查找我选择的短语,如果有,请替换它们。必须有更好的方法来做到这一点 def cleanLists(listToClean, extList): cleanFileList = [] for filename in listToClean: name = os.path.split

我知道有更好的方法,但我不知道是什么。我正在整理一个文件列表,我想删除“通常的嫌疑犯”,这样我可以比较一个列表和另一个列表

根据我的理解,name.replace()查看列表中的每一项,以查找我选择的短语,如果有,请替换它们。必须有更好的方法来做到这一点

def cleanLists(listToClean, extList):
    cleanFileList = []
    for filename in listToClean:
        name = os.path.split(filename)[1]
        ext = os.path.splitext(name)
        if ext[1] in extList:
            name = name.replace(ext[1], '') 
            name = name.replace('1080p', '')
            name = name.replace('1080P', '')
            name = name.replace('720p', '')
            name = name.replace('720P', '')
            name = name.replace('HD', '')
            name = name.replace('(', ' ')
            name = name.replace(')', '')
            name = name.replace('.', ' ')
            cleanFileList.append(name)
    cleanFileList.sort(key=lambda x: x.lower())
    return cleanFileList
显然,要从每个名称中清除的单词的声明将发生在函数的顶部,而不是在文件名列表的每次迭代中

# do this once
import re
bad_strings = ['1080p', '720p'] # etc
regex = '|'.join(re.escape(x) for x in bad_strings)
subber = re.compile(regex, re.IGNORECASE).sub

# do this once for each name
name = name.replace(ext[1], '')
# OR maybe better: name = ext[0] # see below
cleanFileList.append(subber('', name))

考虑一下“csv”在您的扩展名列表中的位置,您有一个名为“summary\u of_csv\u files.csv”的文件……

@junjane的好主意,我在匆忙中忽略了这一点,我唯一要更改的是作为元组的坏名称:)元组更轻,因为您无法动态地向它们添加更多数据。使它们很好地匹配如下常量列表:)
cleanFileList=[listToClean中name的subber(“”,name)]#执行此操作一次
@agf:省略删除扩展此方法效果非常好!谢谢我以前从未用过re,它们看起来有点吓人。
# do this once
import re
bad_strings = ['1080p', '720p'] # etc
regex = '|'.join(re.escape(x) for x in bad_strings)
subber = re.compile(regex, re.IGNORECASE).sub

# do this once for each name
name = name.replace(ext[1], '')
# OR maybe better: name = ext[0] # see below
cleanFileList.append(subber('', name))