Найти - Пользователи
Полная версия: Сбор информации и как сделать всё грамотно?!
Начало » Python для новичков » Сбор информации и как сделать всё грамотно?!
1
Lynx
Добрый день, уважаемые знатоки.

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

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

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

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

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

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

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

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

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

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

Спасибо за понимание и за трату вашего времени ко мне.
Андрей Светлов
FAQ'a по использованию поисковых машин — не будет.
kostafey
http://www.python.org/doc/
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/index.html
По кодировкам это поможет:
http://wiki.python.org/moin/PrintFails

Вообще, для целей PyQt все более смотрю в сторону python3.
Lynx
Спасибо 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)
kachayev
не привели код, который указывал бы на то, что такое 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')
PooH
...
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 строка, а к ней пытаетесь прибавить единицу
Lynx
МАГИЯ!!!! )) Заработало!)
Бафушее спасибо!
Ну не ищу легких путей для интерпритатора)) Пускай тоже подумает!)
Lynx
Возвращаюсь к кодировкам… Я видел тему, но она не в моей теме почти.

Я знаю, что в Пингвине стандартная кодировка 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, чтоб показывало… менять код???
Слышал про страшное слово локаль, но из прочитанного ничего толком не понял…

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

Спасибо за внимание
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