2015-02-18 3 views
1

У друга проблемы с кучей файлов, которые переименованы в тарабарщину. Это lookes так:Фиксирование имени таблеток в Python?

03-ñîáä-áøâì-ùîàì.mp3 

, когда он должен выглядеть следующим образом:

03-סמבה-ברגל-שמאל.mp3 

Теперь количество файлов огромно, поэтому он спросил, если я мог бы помочь с питона сценария. Я начал вмешиваться, но он просто не сдвинется с места. Мое предположение, что это был CP-1255 (или windows-1255) представлены как utf-8, так что я пробовал:

fname.decode('utf-8').encode('windows-1255') 

Но я получил «не может кодировать символы» ошибки. Поэтому я затем попытался переключить их, а также попробовал latin-1, windows-1252, cp862 и даже ISO-8859-8. Ничего.

Что мне делать? Кодировка всегда меня путала. Как мне с этим справиться?

Я использую Python 2.7

+0

Я не знаю, как помочь с кодировкой, но я знаю, что вы можете переименовать все, используя 'os.rename' – Zizouz212

+0

@ Zizouz212 да, я знаю, что тоже, я не новичок в Python – yuvi

+0

Have вы попробовали? Возможно, если бы вы могли отслеживать то, что содержалось в исходных типах файлов, и переименовали его в нечто вроде чисел, а затем переименовали их правильно? Просто идея ... – Zizouz212

ответ

2

Вы почти были правы, но оригинальная кодировка windows-1252, не utf-8.

>>> print u'03-ñîáä-áøâì-ùîàì.mp3'.encode('cp1252').decode('cp1255') 
03-סמבה-ברגל-שמאל.mp3 
+0

Да, я тоже это пробовал. 'mp3.decode ('windows-1252'). encode ('utf-8')' приводит к '03-Ã ± Ã? mp3.mp3'. Это другая тарабарщина, но все же тарабарщина – yuvi

+0

@yuvi Я заработал над своей системой, просто пытаясь перевести эти результаты, чтобы я мог ее отредактировать в ответ. –

+0

да !!! на самом деле нам нужно сначала декодировать его на utf-8 (у меня это как переменная 'fname', поэтому я не могу просто добавить немного приятного' u'''). поэтому мы имеем: 'fname.decode ('utf-8'). encode ('cp1252'). decode ('cp1255')'. sheesh, какая головная боль. Большое спасибо =] – yuvi

Смежные вопросы