Как я могу привести в порядок этот очиститель имен файлов? - PullRequest
2 голосов
/ 25 июля 2011

Я знаю, что есть лучший способ сделать это, но я не знаю, что это такое. Я сортирую список файлов и хочу удалить «обычных подозреваемых», чтобы сравнить один список с другим.

Из того, что я понимаю, name.replace () просматривает каждый элемент списка listCoan для выбранных фраз и заменяет их, если они присутствуют. Должен быть лучший способ сделать это ...

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

Ответы [ 2 ]

5 голосов
/ 25 июля 2011
bad_names = ['1080p', '720p'] # and so on
for bad_name in bad_names:
    name = name.replace(bad_name, '')

Очевидно, что ваше объявление слов для очистки от каждого имени будет происходить в верхней части функции, а не для каждой итерации по списку имен файлов.

1 голос
/ 25 июля 2011
# 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_of_csv_files.csv' ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...