Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2011 15:10:39

Lynx
От:
Зарегистрирован: 2011-07-02
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Сбор информации и как сделать всё грамотно?!

Добрый день, уважаемые знатоки.

Я хочу сделать приложение, которое бы забирала некоторую информацию с google почты и выводило не в cmd, а в красивое окошечко.

Для этого мне надо PyQT, ну и сам Py =)

Откровенно говоря, я не силён в Linux ОС и работаю на Win 7, привычнее для глазу.

Много геморроя повстречал начиная с кодировок, заканчивая PyQT.

От воды к ясности:

Я собираю всю информацию, обработанную в Список, так как в него удобно вкладывать ещё списки.
Но при выводе в cmd появляется черте что…
Читал статью на хабрахабр, как кто-то боролся с кодировкой не очень помогло, точнее я не понял что там происходит

Вообщем оставил всё как есть, начал изучать PyQT перерыл много сайтов на русском языке ничего толкового не нашёл…
Примеры слишком примитивные, а для моей программы не понятно, что куда и как…

И я задумался…
К чему я виду, раз у меня уже при выводе на экран в cmd print list, допустим так, выводит корокозябру, напоминаю, там вложена дважды, то у меня явно будут проблемы и с PyQT…

Как правильней сделать, чтоб собрать информацию и не запороть вывод - использовать SQLLite (на днях прочитал про него) или же список или же как-то по другому…
Хотелось бы видеть ввиде таблицы…

PS Знатоки и новички не обессудьте, если что-то не так написал… Код выкладывать не хочу - стыдно за мой го*но код, но если попросите - выложу…

Спасибо за понимание и за трату вашего времени ко мне.



Отредактировано (Июль 18, 2011 17:30:50)

Офлайн

#2 Июль 18, 2011 15:46:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Сбор информации и как сделать всё грамотно?!

FAQ'a по использованию поисковых машин — не будет.



Офлайн

#3 Июль 19, 2011 09:11:52

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

Сбор информации и как сделать всё грамотно?!

http://www.python.org/doc/
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/index.html
По кодировкам это поможет:
http://wiki.python.org/moin/PrintFails

Вообще, для целей PyQt все более смотрю в сторону python3.



Офлайн

#4 Июль 24, 2011 18:11:21

Lynx
От:
Зарегистрирован: 2011-07-02
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Сбор информации и как сделать всё грамотно?!

Спасибо kostafey, дал бы +1, но не вижу где.

Решился на словари все же.
Но тут загвоздка.
Знатоки выручайте.

...
BigBoxMessage = dict();
Ms = ["MsId ", "MsFrom ", "MsSubject ", "MsWhere ", "MsFiles "]

for num_first in Status_first[0].split():
BigBoxMessage[Ms[0] + str(num_first + 1)] = msg_first.get('Message-ID')
...
Вывод ошибки: TypeError: cannot concatenate ‘str’ and ‘int’ objects

Попробовал на IDLE (Python GUI), ошибки нету….
Не пойму, что не так… Вроде где надо стоит str() … Выручайте )

PS Python 2.7 x64 (Win 7 x64)



Офлайн

#5 Июль 24, 2011 18:47:34

kachayev
От:
Зарегистрирован: 2011-07-08
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Сбор информации и как сделать всё грамотно?!

не привели код, который указывал бы на то, что такое Status_first
хотя и так догадатся можно…

Status_first.split() - это строки
значит интерпритатор ругается на num_first + 1 (строка + инт).
и вообще, код этой строки получиается замуторным:

BigBoxMessage[Ms[0] + str(num_first + 1)] = msg_first.get('Message-ID')
может так:

BigBoxMessage[Ms[0] + str(int(num_first) + 1))] = msg_first.get('Message-ID')



Отредактировано (Июль 24, 2011 18:50:21)

Офлайн

#6 Июль 24, 2011 19:07:46

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

Сбор информации и как сделать всё грамотно?!

...
for num_first in Status_first[0].split():
BigBoxMessage[Ms[0] + str(num_first + 1)] = msg_first.get('Message-ID')
#num_first + 1 судя по коду выше в num_first строка, а к ней пытаетесь прибавить единицу



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

Офлайн

#7 Июль 24, 2011 19:13:39

Lynx
От:
Зарегистрирован: 2011-07-02
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Сбор информации и как сделать всё грамотно?!

МАГИЯ!!!! )) Заработало!)
Бафушее спасибо!
Ну не ищу легких путей для интерпритатора)) Пускай тоже подумает!)



Офлайн

#8 Июль 25, 2011 13:52:44

Lynx
От:
Зарегистрирован: 2011-07-02
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Сбор информации и как сделать всё грамотно?!

Возвращаюсь к кодировкам… Я видел тему, но она не в моей теме почти.

Я знаю, что в Пингвине стандартная кодировка Unicode. В Винде раздвоение личности, если не ошибаюсь в приложения по стандарту cp1251, а в cmd cp866, в принципе по начитанному разницы не должно быть… Но она есть. А про Маки и Яблочки я хз, что там.

Хочу, чтоб и в Win и в Unix выводилось в приложении читаемый для людей русский язык =) С англ, вроде бы нет проблем.

Начнём. Вот получаем няху.

>>> j = "=?KOI8-R?B?UmU6IDQ30SDawcTB3sE=?="  # Токая няшка в Теме сообщения
>>> from email.header import decode_header # знакомый дал мне наводку на вот это. Чтож плохого не посоветует.
>>> a = decode_header(j) # Ул магия и....
>>> print a
[('Re: 47\xd1 \xda\xc1\xc4\xc1\xde\xc1', 'koi8-r')] # Тада =) Мы знаем какая кодировка.
>>> print a[0][0]
Re: 47С ЪБДБЮБ # Тут фейл с большой буквы. Но ничего.

>>> b = a[0][0].decode(a[0][1]).encode("cp1251") # Ещё немного ул магии
>>> b
'Re: 47\xff \xe7\xe0\xe4\xe0\xf7\xe0'
>>> print b
Re: 47я задача # И о чудо, мы видим результат.
Это конечно здорово, если это на win и одна строчка, а если я хочу на Unix, чтоб показывало… менять код???
Слышал про страшное слово локаль, но из прочитанного ничего толком не понял…

Вопросы такие:
Правильно ли я делаю и понимаю про кодировки?
Можно ли это упростить до одной строчки? Все же язык не из простых…

Спасибо за внимание



Отредактировано (Июль 25, 2011 13:53:20)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version