Найти - Пользователи
Полная версия: codecs
Начало » Центр помощи » codecs
1 2
ofigetitelno
:)
codec.open открывает файл, и указыват, что при чтении файл будет перекодироваться из указанной кодировки в юникод…
в какой кодировке у вас файл?
split разбирвает строку по разделителю и возвращает массив строк
что есть words?
нам нужно выводить не массив а отдельные строки.
как взять один элемент из массива?
а в цикле?
если всё хорошо, то принт нормально выведет строку в юникоде (строку, а не массив)
verec
так, открывая через lister в total commander и выбирая кодировку кириллическая(windows) для файла, файл отображается корректно, значит у файла кодировка windows-1251
получается, что f.read() должен вернуть весь текст из файла как unicode строку
тогда после применения text.split() в цщквы должен получиться list из слов в строке text
а значит words теперь содержит все слова из текста в unicode
но почему при выводе в консоль русские слова печатаются как коды?
ofigetitelno
:)
т.е. words - это список слов
print words - выводит список слов, но как я писал выше, принт нормально может вывести строку, а не список…
внимание вопрос:
как нам вывести строку? (ещё раз, строку, а не список строк)
InPython
str(words)
verec
как простую строчку вывести я знаю, но вот почему юникодовая строчка не выводится не понимаю

сейчас попробовал сделать вывод в файл вот так и вроде всё нормально получается
f = codecs.open(doc, 'r', "windows-1251")
text = f.read()
words = text.split()
output_file = codecs.open(".../temp_debug.txt", "a", "utf-8")
for w in words:
output_file.write(w)
output_file.close()
но если делаю так
f = codecs.open(doc, 'r', "windows-1251")
text = f.read()
words = text.split()
output_file = codecs.open(".../temp_debug.txt", "a", "utf-8")
for w in words:
print w
#output_file.write(w)
output_file.close()
то выдаёт такую диагностику
print w
File “C:\Program Files\Python26\lib\encodings\cp866.py”, line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character u'\xbb' in position 0
: character maps to <undefined>
ofigetitelno
:)
начните с простого…
print u'юникод'.encode('cp866')
print u'юникод'
работает - хорошо
не работает - какая-то фигня с настройкой консоли
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