Найти - Пользователи
Полная версия: Проблемы с кодировкой
Начало » Python для новичков » Проблемы с кодировкой
1
wmnpyafn
Вывожу список файлов и папок методом listdir из модуля os. Вместо названий файлов написанных на русском получаю вот такие строки ‘\xd0\x9a\xd0\xbe\xd0\xb3\xd0\xb4\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xbc\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x8b\xd1\x85’
sergeek
b'\xd0\x9a\xd0\xbe\xd0\xb3\xd0\xb4\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xbc\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x8b\xd1\x85'.decode()
Out[1]: 'Когда хоронят молодых'
wmnpyafn
Не буду же я каждую строку так делать, файлов с русскими названиями куча. Должен же быть другой вариант.
Singularity
wmnpyafn
Не буду же я каждую строку так делать
Можно разобраться с циклам или кодировками на выбор.
wmnpyafn
Что вы подразумеваете под тем, что разобраться с циклами я понял, а про второй вариант можете по подробней?
reclosedev
http://docs.python.org/2/library/os.html#os.listdir
On Windows NT/2k/XP and Unix, if path is a Unicode object, the result will be a list of Unicode objects. Undecodable filenames will still be returned as string objects.
Передавайте Юникод, получите список Юникодовых путей.
os.listdir(u'path')
wmnpyafn
Ну и толку мне, что я получу в юникоде!? Я одинаково не умею читать ни строку вида ‘NTL - \xd0\x9a\xd0\xbe\xd0\xb3\xd0\xb4\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xbc\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x8b\xd1\x85.mp3’
и не строку вида ‘NTL - \xd0\x9a\xd0\xbe\xd0\xb3\xd0\xb4\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xbc\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x8b\xd1\x85.mp3’
ilnur
wmnpyafn
на русском получаю вот такие строки ‘\xd0\x9a\xd0\xbe\xd0\xb3\xd0\xb4\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xbc\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x8b\xd1\x85’
а в чем проблема? Гдн получаете? В консоли?
doza_and
wmnpyafn
Ну и толку мне, что я получу в юникоде!?
Как говорил винипух - спокойствие и только спокойствие. Вы не объяснили что с названиями хотите сделать, вот и получили соответствующий ответ.

Есть много способов работать со строками. Сейчас стандарт де факто - получить данные из внешнего источника, перевести их в юникод и дальше работать только с юникодом. (Обычные строки не содержат достаточно данных чтобы их правильно отобразить - нужна доп информация о кодировке, а юникод строки лишены этого недостатка но зато занимают больше памяти).

wmnpyafn
Вывожу список файлов
‘NTL - \xd0\x9a\xd0\xbe\x…."
Вам правильно говорят напишите что конкретно (команды питона) что вы делаете чтобы это получить.


Карлсон
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB