Форум сайта python.su
:)
codec.open открывает файл, и указыват, что при чтении файл будет перекодироваться из указанной кодировки в юникод…
в какой кодировке у вас файл?
split разбирвает строку по разделителю и возвращает массив строк
что есть words?
нам нужно выводить не массив а отдельные строки.
как взять один элемент из массива?
а в цикле?
если всё хорошо, то принт нормально выведет строку в юникоде (строку, а не массив)
Отредактировано (Май 24, 2011 23:24:33)
Офлайн
так, открывая через lister в total commander и выбирая кодировку кириллическая(windows) для файла, файл отображается корректно, значит у файла кодировка windows-1251
получается, что f.read() должен вернуть весь текст из файла как unicode строку
тогда после применения text.split() в цщквы должен получиться list из слов в строке text
а значит words теперь содержит все слова из текста в unicode
но почему при выводе в консоль русские слова печатаются как коды?
Офлайн
:)
т.е. words - это список слов
print words - выводит список слов, но как я писал выше, принт нормально может вывести строку, а не список…
внимание вопрос:
как нам вывести строку? (ещё раз, строку, а не список строк)
Офлайн
str(words)
Офлайн
как простую строчку вывести я знаю, но вот почему юникодовая строчка не выводится не понимаю
сейчас попробовал сделать вывод в файл вот так и вроде всё нормально получается
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 u'юникод'.encode('cp866')
print u'юникод'
работает - хорошо
не работает - какая-то фигня с настройкой консоли
Офлайн