Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2012 20:51:44

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

buddha
К сожаления не решило задачу

У меня все работает(XP), не думаю что для utf в корне чтото меняет ось. Что на выходе?




Офлайн

#2 Май 15, 2012 20:59:16

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

на выходе байты

Отредактировано buddha (Май 16, 2012 19:58:30)

Офлайн

#3 Май 16, 2012 20:03:00

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

IDE encoding : utf-8(т.е. так сохраняет файл pyСharm)
убрал u'':

# -*- coding: utf-8 -*-
.....
categoies={1:'заметки', 2:'результаты', 3:'цели'}
пробую:
>>>import Notes
>>>Notes.categoies[1]
'\xd0\xb7\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x82\xd0\xba\xd0\xb8'

Офлайн

#4 Май 16, 2012 20:59:27

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

buddha
2. При заполнении атрибута класса Note.text:
Note: >? 'some first text'
возможно ли вводить строкое значение без кавычек?

Вместо функции input() вставить raw_input()

Офлайн

#5 Май 16, 2012 22:51:36

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Разобрался таки с юникодом и кодировкой.
Помогла статья http://habrahabr.ru/post/135913/

Рабочий код с коррективами:

# -*- coding: utf-8 -*-
import datetime
#список категорий и записная книга
categories={1:'заметка', 2:'результат', 3:'цель', 4:'закрыть книгу'}
notebook=[]
#класс обозначает запись в записной книге
class Note():
    def __init__(self):
        self.date=datetime.date.today()
        #в цикле для корректного отображения значения по ключу в строке
        for key in categories:
            print key, categories[key]
        #выполняем до корректного ввода номера категории
        while True:
            try :
                categoryChoice=int(input('введите номер категории'))
                #закрываем при выборе 4
                if categoryChoice==4: break
                self.category=categories[categoryChoice]
            except (NameError, ValueError):
                print 'повторите попытку'
                continue
            #raw_input возвращает значение с типом unicode, потому кодируем в utf-8
            text=raw_input(self.category)
            self.text=text.encode('utf-8')
            break
    #отрабатывает при вызове print для экземпляра класса
    def __str__(self):
        return '%s|%s|%s' % (self.date, self.category, self.text)
#добавление записи в книгу
def add_note():
    note=Note()
    if hasattr(note,'category'):
        notebook.append(note)
#получение всех записей
def get_notes():
    for i,note in enumerate(notebook):
        print i, note

Отредактировано buddha (Май 16, 2012 23:03:50)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version