Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

04.01.2010, 14:38
|
|
Участник форума
Регистрация: 22.04.2009
Сообщений: 139
Провел на форуме: 262667
Репутация:
5
|
|
еще есть вопрос: что такое django?
|
|
|

04.01.2010, 14:47
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме: 3578578
Репутация:
275
|
|
Сообщение от jasd
еще есть вопрос: что такое django?
фреймворк для построения веб-приложений на python'e
|
|
|

05.01.2010, 15:34
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
Провел на форуме: 810079
Репутация:
90
|
|
Код на Пёрле:
Код:
my $per = pack('V', 0x71AB9372);
Как сделать аналогично на Питоне?
|
|
|

05.01.2010, 15:38
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Код:
import struct
per = struct.pack("<L", 0x71AB9372)
Дальше в зависимости от того что и как там нужно.
Смотри справку по модулю struct
upd. Кажется так (аналог "V" для PERL, если я не ошибаюсь)
Последний раз редактировалось login999; 05.01.2010 в 15:43..
|
|
|

08.01.2010, 14:47
|
|
Познающий
Регистрация: 05.09.2009
Сообщений: 34
Провел на форуме: 86734
Репутация:
14
|
|
Код:
def bash():
res = urllib.request.urlopen('http://bash.org.ru/random')
res= str(res.read())
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251'))
AttributeError: 'str' object has no attribute 'decode'
Как сделать, чтобы выводил русский текст?
python v. 3.1
|
|
|

08.01.2010, 15:03
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от Ice_VeNOm
Код:
def bash():
res = urllib.request.urlopen('http://bash.org.ru/random')
res= str(res.read())
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251'))
Как сделать, чтобы выводил русский текст?
python v. 3.1
В 3.1. по-другому нужно
попробуй так.
Код:
res = urllib.request.urlopen('http://bash.org.ru/random')
res= res.read()
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.decode('cp1251').encode("cp866"))
|
|
|

08.01.2010, 15:08
|
|
Познающий
Регистрация: 05.09.2009
Сообщений: 34
Провел на форуме: 86734
Репутация:
14
|
|
Таже самая ошибка
|
|
|

08.01.2010, 15:12
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Код:
res = urllib.request.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(x.encode("cp866"))
А так ?
П.С. Винда ?
|
|
|

08.01.2010, 16:02
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Я делаю так:
# -*- coding: UTF-8 -*-
text = "Текст"
print(text)
Храню текст не в юникоде.Ещё бывает помогает
print text.decode("utf-8","ignore")
Бред,но пока не подводил 
В твоём случае можно сделать вот так:
# -*- coding: UTF-8 -*-
import re,urllib
res = urllib.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(str(x))
Проверил на 2.6,работает.Все эти способы бредовые,но нормальных я не нашёл.
Последний раз редактировалось rushter; 08.01.2010 в 16:11..
|
|
|

08.01.2010, 16:11
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от rushter
Я делаю так:
Бред,но пока не подводил 
Там в 3.1 меня напрягает этот bytes тип данных. Мне, как привыкшему к 2.6 сложно выкупить там все эти хитросплетения. Фактически, у bytes есть возможность сделать только .decode(), после которого они превращаются в str в кодировке UTF-8, обьекты типа str можно только encode() в bytes кодировки, указанной при вызове encode(). Т.е после .decode получаем str с возможностью вызова только .encode(), а после encode() получаем bytes с возможностью вызова исключительно .decode() для получения str.
Какая-то блин слишком strict работа с кодировками ИМХО.
Я привык к типу данных unicode в 2.6 который мне уже кажется очень простым и гибким при работе с кодировками.
Хотя я конечно, в экстазе от:
Код:
import sys
def жаба():
print "Я квакаю".encode(sys.getdefaultencoding())
Судя по отсутствию комментов к этому посту скорее всего все подумали "Какого хрена он это написал???"
Обьясню код от rushter с точки зрения Python 3.1 и Python 2.6:
Код:
# -*- coding: UTF-8 -*-
import re,urllib
res = urllib.urlopen('http://bash.org.ru/random')
res= res.read().decode('cp1251')#Вот здесь вот с точки зрения Python2.6 Идет: .read() - чтение данных, которые имеют тип str(некая абстрактная строка в неизвестной кодировке(для python)),потом идёт перевод этой строки в тип unicode(это для Python едино и понятно). С точки зрения Python3.1 здесь при .read() идёт чтение в этот новый тип bytes, которые представляют собой "просто байты", работать с этим типом как со строковыми данными нельзя, для этого необходимо сделать .decode() из кодировки этих байтов, в результате чего они преображаются в тип str, который являет собой строку в кодировке UTF-8 (фактически, насколько я понял, str - это тот же unicode, просто что все четко прописано)
s=re.search(r"<div>(.*?)<\/div>",res)
for x in s.groups():
print(str(x))#Вот здесь идет вывод собранных данных в консоль, вот здесь то меня и напрягает то, что на печать все пошло нормально, либо Python автоматически переводит весь вывод в кодировку терминала, либо у Ice_VeNOm кодировка терминала - UTF-8. И вот такое преображение в str()оно здесь не нужно нафик (по идее)
Хз короче, путаница одна с этим Python 3.1. Мб кто из опытных обьяснит, что там с этим bytes и str, ато я вроде и понимаю что они это типа аналог unicode из 2.6, и все равно как-то стремно их воспронимать так же =\
Последний раз редактировалось login999; 08.01.2010 в 20:20..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|