в unicodedata.normalize отсутствует один символ, выполняющий преобразование - PullRequest
1 голос
/ 26 июня 2019

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

def remove_accents(s): 
    nkfd_form = unicodedata.normalize('NFKD', s) 
    return u''.join([c for c in nkfd_form if not unicodedata.combining(c)])

for fname in glob.glob("**/*.mp3", recursive=True):
    new_fname = remove_accents(fname)
    if new_fname != fname:
        try:
            print ('renaming non-ascii filename to', new_fname)
            os.rename(fname, new_fname)
        except Exception as e:
            print (e)

1 Ответ

3 голосов
/ 26 июня 2019

Неправильный инструмент для работы - unicodedata.normalize вовсе не касается удаления акцентов.

Для преобразования с понижением частоты в ascii вместо этого посмотрите unidecode:

>>> from unidecode import unidecode
>>> unidecode("Don’t")
"Don't"
...