Уведомления

Группа в Telegram: @pythonsu

#1 Июль 7, 2008 23:08:53

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

Хмм… вообщем изначально предполагалось как работа с текстом) а как тест шли строки… То есть для работы с большим текстом можно разбивать текст на куски, определенной длинны и прогонять их в функции по очередности?
Добавил туда функцию брать текст из файла, опять проблема с кодировкой)) Дело в том, что берется из файла где одна кодировка, а запускается все в консоли, где cp866. В shelle все работает норм, а вот как перекодировать под консоль не понял. Попробовал unicode с выбраной кодировкой и encoding() - не помогло:(. Почитал про base64 модуль, но как я понял он не для того сущствует. Если не трудно - напишите, а то запускать в консоле удобней, чем в шеле.
И ведь можно же сделать автоопределение кодировки? А то писать два варианта программы и для консоли и для шела это изврат.



Отредактировано (Июль 7, 2008 23:28:40)

Офлайн

#2 Июль 8, 2008 00:21:09

Andity
От:
Зарегистрирован: 2008-02-22
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

Moonbite2006
“Использование Unicode в Python”
почитай тезисы.



Офлайн

#3 Июль 8, 2008 00:54:24

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

Andity
Moonbite2006
“Использование Unicode в Python”
почитай тезисы.
Почитал… Посмотрел и т.д. Как я понял в программе изначально все надо делать в юникоде, а уже потом декодировать в нужную кодировку? А также существует проблема не явного декодирования.
Все это хорошо, вставил такую строку, в двух местах… в месте где строке присваивается строка из файла:
document.decode("cp866")
и уже на всякий пожарный при выводе результата конечного на экран:
temp_st.decode("cp866")
Результат неизменный… все идет не в той кодировке. Подумал что нужно предварительно присвоить это все дело новой переменной, но и тут ждало огорчение. Выдал ошибку UnicodeWarning. Сильно не бейте, может не внимательно читал все это дело, завтра с утра еще подумаю. Но, если не трудно подскажите в чем еще может быть трабл.



Офлайн

#4 Июль 8, 2008 06:06:15

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

import codecs
document = codecs.open('<имя файла>', 'r', 'cp1251').read() #вместо cp1251 укажи кодировку файла
#теперь document у тебя в unicode
#но лучше обрабатывать построчно
for s in codecs.open('<имя файла>', 'r', 'cp1251'):
    #здесь работаем с s, s - в unicode
#тут я не помню, вроде питон сам должен преобразовать вывод к кодировке консоли
#во всяком случае у меня он это делает
#но можешь и сам преобразовать
print s.encode('cp866', 'replace') 
# 'replace' - для того,  чтобы при перекодировке 
#заменять на заполнитель символы, которых нет в cp866



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Июль 8, 2008 06:10:10)

Офлайн

#5 Июль 8, 2008 09:08:25

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

Пух, благодарю) Неужели существует 1000 и 1 способ поменять кодировку? и еще не везде все и работает:( Не очень понял для чего указывать кодировку файла при открытии документа, ведь он читает строки в той кодировке, в какой написан файл, независимо от того что я ему напишу…



Офлайн

#6 Июль 8, 2008 09:36:59

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемма в h=string.index(line,i)

Moonbite2006
Пух, благодарю) Неужели существует 1000 и 1 способ поменять кодировку? и еще не везде все и работает:( Не очень понял для чего указывать кодировку файла при открытии документа, ведь он читает строки в той кодировке, в какой написан файл, независимо от того что я ему напишу…
советую не почитать тезисы а посмотреть видео, глядя в пдф к нему.
чоень хороший доклад Юревича, отпадут сразу многие вопросы.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version