Я хотел бы нормализовать имена файлов с помощью - как я бы назвал - «списка отображения» в python.
Например, у меня есть несколько файлов, названных так:
Abb. 1 - Streßfaktor ìmpersóna.jpg
Abb. 2 - Änderungsverlauf.jpg
Abb. 3 — Senôjarîolé.jpg
Моя цель заключается в следующем:
Abb_1_Stressfaktor_impersona.jpg
Abb_2_Aenderungsverlauf.jpg
Abb_3_Senojariole.jpg
Правила довольно просты и могут храниться в «списке отображения» с регулярными выражениями:
"\s+|.|,|;|-|–|—" : "_"
"ß" : "ss"
"ä" : "ae"
"ü" : "ue"
"ö" : "oe"
"á|â|à|ā|ă|ą|ã|å" : "a"
"í|í|ì|ï|ĩ|ī|ĭ|į|ǐ" : "i"
"_+" : "_"
Итак, перед :
есть строка поиска в регулярном выражении, после :
есть строка замены.
Я уже пробовал:
import os
current_path = os.getcwd()
print('Current path: %s' %current_path)
filenames = os.listdir(current_path)
for filenamen in filnames:
os.rename(filename, filename.replace(" ", "_"))
os.rename(filename, filename.replace(".", "_"))
os.rename(filename, filename.replace(",", "_"))
os.rename(filename, filename.replace(";", "_"))
os.rename(filename, filename.replace("-", "_"))
os.rename(filename, filename.replace("–", "_"))
os.rename(filename, filename.replace("—", "_"))
os.rename(filename, filename.replace("ß", "ss"))
os.rename(filename, filename.replace("ä", "ae"))
os.rename(filename, filename.replace("ü", "ue"))
os.rename(filename, filename.replace("ö", "o"))
os.rename(filename, filename.replace("á", "a"))
os.rename(filename, filename.replace("â", "a"))
os.rename(filename, filename.replace("à", "a"))
…
Но проблемас этим кодом, что, как только первая замена сделана, я получаю FileNotFoundError , что логично: имя файла было изменено, и, следовательно, «оригинальный» файл больше не существует.
Я уже искал решение с «списком сопоставлений», но не нашел ничего удобного для достижения поставленной цели.
Кто-нибудь знает, как решить эту проблему?