Ответы пользователя по тегу Python
  • Реализация long2ip(). Как конвертировать ip с long в string?

    @throughtheether
    human after all
    Если хотите изобретать велосипед, по при помощи модуля struct запакуйте 32-битное значение в строку и распакуйте результат как 4 байта.

    Если хотите решить задачу без излишних усилий, можете воспользоваться модулем netaddr:
    >>> import netaddr
    >>> int(netaddr.IPAddress('77.88.21.8'))
    1297618184
    >>> str(netaddr.IPAddress(1297618184))
    '77.88.21.8'


    UPD:
    у меня была задача именно самому выполнить эти преобразования,
    Держите тогда два модных однострочника:
    def long_to_dotted_decimal(val):
        return '.'.join(map(str,[val%256**idx/256**(idx-1) for idx in xrange(4,0,-1)]))
    
    def dotted_decimal_to_long(strval):
        return sum(map(lambda (power,octet):256**power*int(octet),enumerate(reversed(strval.split('.')))))

    Пример использования:
    >>> long_to_dotted_decimal(dotted_decimal_to_long('127.0.0.1'))
    '127.0.0.1'
    >>> long_to_dotted_decimal(dotted_decimal_to_long('255.255.255.255'))
    '255.255.255.255'
    >>> long_to_dotted_decimal(1297618184)
    '77.88.21.8'
    >>> dotted_decimal_to_long('77.88.21.8')
    1297618184
    Ответ написан
    3 комментария
  • На каком ЯП лучше реализовать небольшое приложение для работы с веб-данными?

    @throughtheether
    human after all
    Если это не контролируемый вами сайт, и по сути вам надо зайти браузером на сайт и ввести комментарий через форму, то подойдет python с модулями requests (если все просто) или ghost.py/selenium (если нужна какая-то сложная работа с javascript)
    Ответ написан
    1 комментарий
  • Как с помощью python подсветить слова в документе не ломая DOM?

    @throughtheether
    human after all
    Навскидку, делал бы так:
    1) нашел бы интересующий элемент (текстовую ноду)
    2) обратился бы к его родителю (непосредственному предку)
    3) интересующий элемент разделил бы на три: до ключевого слова, ключевое слово и после него.
    4) запомнил бы индекс элемента из п. 1) среди потомков родителя из п. 2), удалил его, на его место вставил три потомка из п. 3), при чем средний из них должен быть обернут в span с нужным форматированием.
    UPD:
    не python, но посмотрите на этот проект.
    Ответ написан
    Комментировать
  • Murmurhash3.. Почему два значения?

    @throughtheether
    human after all
    Почему два значения то?
    Если правильно помню, murmurhash3 генерирует 32- или 128-битный хэш. Два 64-битных числа - это, видимо, две половины результирующего хэша.

    Если нужно одно 128-битное число, используйте функцию hash128. Здесь есть пример.

    Если нужно одно 64-битное число, берите то, которое больше понравится.
    Ответ написан
    Комментировать
  • Как расчитать рапределение значений?

    @throughtheether
    human after all
    Попробуйте использовать Counter. Пример на python 2.7:
    >>> from collections import Counter
    >>> d={'a':2,'b':2,'c':5}
    >>> Counter(d.values())
    Counter({2: 2, 5: 1})
    >>> Counter(d.itervalues())
    Counter({2: 2, 5: 1})
    Ответ написан
    Комментировать
  • Python, начало работы, что делать с кодировкой?

    @throughtheether
    human after all
    Он мне ни в какую не пишет русскими буквами,
    Проблемная буква - не русская, а греческая.

    Подскажите, что делаю не так?
    Выводите в консоль символы, которые она не поддерживает. Здесь есть некоторые варианты решения проблемы. Но я вам рекомендую использовать другие возможности отображения информации (т.е. писать в файл или показывать на веб-странице).
    Ответ написан
    Комментировать
  • Почему Python Requests медленно работает на ubuntu 14.04?

    @throughtheether
    human after all
    Задержку разрешения имен (DNS) сравните.
    Ответ написан
    Комментировать
  • Python как очистить строку от пробелов и переносов строк?

    @throughtheether
    human after all
    >>> line='\n\n\n641717\n\site.ru\n60\n\nАктивен\n\n\n2005\n\n\n61%\n\n\n\n8%\n\n\n\n\n\n 12.59\n\n\n\n\n 414.63\n\n\n\n 4 712.49\n\n\n\n\n\n'
    >>> line
    '\n\n\n641717\n\\site.ru\n60\n\n\xc0\xea\xf2\xe8\xe2\xe5\xed\n\n\n2005\n\n\n61%\n\n\n\n8%\n\n\n\n\n\n 12.59\n\n\n\n\n 414.63\n\n\n\n 4 712.49\n\n\n\n\n\n'
    >>> import re
    >>> re.split(r'\s+',line)
    ['', '641717', '\\site.ru', '60', '\xc0\xea\xf2\xe8\xe2\xe5\xed', '2005', '61%', '8%', '12.59', '414.63', '4', '712.49', '']

    Пустые значения можете фильтровать при итерации по списку:
    for item in re.split(r'\s+',line):
        if item:
            pass

    или так:
    >>> re.split(r'\s+',line.strip())
    ['641717', '\\site.ru', '60', '\xc0\xea\xf2\xe8\xe2\xe5\xed', '2005', '61%', '8%', '12.59', '414.63', '4', '712.49']

    Использовал python 2.7.
    Ответ написан
    Комментировать
  • Как составить список заголовков с сайта с помощью grab?

    @throughtheether
    human after all
    Такой вариант вам подойдет?
    for elem in oko_planet.doc.select('//*[@id="dle-content"]/table//span[@class="ntitle"]/a'):
    	print elem.text()

    Вывод на текущий момент:
    spoiler
    После землетрясения в Непале свои дома покинули 2,8 млн человек
    На Сахалине произошло землетрясение магнитудой 3,1
    Ураган в Москве может повредить ЛЭП и повалить деревья
    Землетрясение магнитудой 7,1 произошло в Папуа-Новой Гвинее
    Вулкан Кальбуко продолжает бушевать
    В Папуа-Новой Гвинее произошло сильное землетрясение
    Вулканический остров в Японии перестал расти
    Вулкан Питон-де-ла-Фурнез готовит новый «огненный спектакль»
    Холодный фронт принес в Европу сильный дождь, град и торнадо
    Сводка землетрясений за последние 24 часа. Обновляется ежедневно
    Чем опасны лесные пожары в районе Чернобыля — рассказывает метеоролог
    Прогноз опасных и неблагоприятных гидрометеорологических явлений по территории России
    Метеорологические экстремумы за истекшие сутки
    К Первому мая похолодает
    В Москве ожидается гроза с градом
    В Сеть попали шокирующие кадры начала землетрясения в Тибете
    Песков: Помощь по тушению пожара под Чернобылем можно рассматривать после просьбы Киева
    Ухудшения радиационного фона в России из-за пожара под Чернобылем не зафиксировано
    Козак: Пожарами в Хакасии уничтожено более 1,7 тыс. домов
    Эколог: Пожар в «Чернобыльской пуще» может привести к загрязнению радиоактивными веществами
    Гидрометцентр: дым от пожара в районе Чернобыльской АЭС не дойдет до России
    Эквадор тряхануло на 5,8 балла
    Унесенный ливнем: в США с моста смыло поезд
    В Шотландию вернулась зима
    В Техасе выпал град размером с мячик для софтбола
    В Японии продолжает взрываться вулкан Сакурадзима
    В Средней Азии после 30-градусной жары выпал снег
    Альпинист сумел запечатлеть смертоносную лавину на видео
    Ураганный ветер опрокинул поезд в США
    В погоде появились признаки лета
    Китайская жара накрыла Приморье
    Число жертв непальского землетрясения может достичь 10 тысяч человек
    На Луизиану обрушился ураганный ветер
    Леса Приморья, Забайкалья и Бурятии продолжают гореть
    Часть Индии скользнула под Непал “в считанные секунды”. Но это лишь начало трагедии
    Чилийский вулкан Калбуко превращает близлежащие населенные пункты в города-призраки
    В Техасе смельчак с близкого расстояния снял на видео торнадо
    Под Йеллоустоуном нашли огромное магматическое озеро
    На юге Сибири подводят итоги разрушительных лесных пожаров
    Под занавес месяца апрель порадует майским теплом
    Земля резко поднялась из моря у Хоккайдо в Японии
    Число жертв землетрясения в Непале превысило 3,2 тыс. человек
    Площадь пожаров в Бурятии возросла в 74 раза
    Мощное землетрясение магнитудой 7,9 произошло в Непале
    Гидроразрыв — причина землетрясений, признали американские геологи
    Ученые: после мегаземлетрясения США ждет цикл многократных сильных и разрушительных толчков
    Гнев вулкана Калбуко привел к пеплопадам в Чили и Аргентине
    Пять лет после катастрофы в Мексиканском заливе: кто ее пережил
    Землетрясения в Оклахоме связали с добычей нефти и газа
    Из-за чего пострадал Сидней?
    Извержение вулкана парализовало авиацию в Коста-Рике
    Куда пропал дождь из Европы?
    Прогноз погоды на выходные в России
    Сильное землетрясение в США
    Сильное землетрясение в Японии
    Когда проснется Йеллоустонский супервулкан?
    Ученые: Земля в древности представляла собой ледяную глыбу
    Фантастическое извержение зафиксировано на Солнце
    Летнее тепло на юге Сибири и 40-градусная жара в Средней Азии
    Дым от сибирских пожаров окутал три американских штата
    В Москву возвращается теплая весенняя погода
    Извержение вулкана Кальбуко в Чили: 20 завораживающих снимков
    Климатолог Владимир Клименко: "Одно извержение вулкана – и Земля в новом ледниковом периоде"
    Спустя 40 лет в Чили проснулся один из самых опасных вулканов Кальбуко
    В Кемеровской области зафиксирован необычный оползень
    Гватемальский вулкан Фуэго вновь извергает лаву
    Мощное землетрясение магнитудой 6,1 тряхнуло Индонезию
    Карстовая воронка на Закарпатье увеличилась вдвое
    Из-за засухи на Кубе введен режим экономии воды
    В Сиднее прошел рекордный за 13 лет дождь
    5 ужасающих последствий извержения вулкана Тамбора
    Что произошло с весной? Рассказываем
    Арктический воздух задержится в Москве до выходных
    Угроза цунами объявлена у берегов японского острова Окинава из-за землетрясения
    Психоделическая пещера
    В Закарпатье образовался огромный провал грунта
    Возле островов Уоллис и Футуна произошло землетрясение силой 6,5
    В США снежная буря вызвала массовое ДТП
    Мощный шторм в Техасе оставил без света 78 тысяч человек
    15 апреля в Новокузнецке Кемеровской области произошло масштабное ЧП
    На юге Западной Сибири предупреждают о ненастной погоде
    Хакасия в огне
    Прогноз погоды на выходные в городах России
    Вулканы могут погубить земную цивилизацию уже в этом столетии
    Высыхание Аральского моря — экологическая катастрофа глобального масштаба
    Вулкан Колима засыпал пеплом территорию мексиканского штата Халиско
    Начало выходных в Москве будет пасмурным и прохладным
    Из-за пожаров введен режим ЧС в 5 субъектах Российской Федерации
    У берегов Кипра произошло землетрясение магнитудой 5,5
    Сильная песчаная буря окутала Пекин
    У берегов Венесуэлы произошло землетрясение магнитудой 5,2
    На американский штат Луизиана обрушился крупный град
    Сильно тряхнуло китайскую провинцию Ганьсу, погиб один человек
    Пожары в России: вид из космоса
    Сколько продлятся «антивесенние санкции»?
    В Забайкалье площадь лесных пожаров возросла вдвое
    У берегов Японии произошло землетрясение магнитудой 5,3
    В американском штате Иллинойс водителю удалось снять на видео мощный торнадо
    Камчатский вулкан Шивелуч выбросил два столба пепла
    Буря в Украине оставила без света 284 населенных пункта
    Ответ написан
    2 комментария
  • Как снизить потребление памяти при работе python-скриптов?

    @throughtheether
    human after all
    Как же сделать так, чтобы и при запуске и дальнейшей работе потребляемая память питонов была не большой?
    Не видя кода, трудно о чем-либо судить, но совет могу дать. При парсинге, когда вы извлекаете характеристики "единицы" данных (товар интернет-магазина или твит в твиттере), вместо того, чтобы затем предавать в другую функцию список, содержащий множество "единиц" данных, передавайте их по одной при помощи yield.
    Ответ написан
    Комментировать
  • Как обойти ошибку timeout и сделать работу скрипта на python бесконечной?

    @throughtheether
    human after all
    Как обойти эту ошибку или сделать так, чтобы парсер посылал запрос бесконечно, пока не получит ответ, но не вырубался?
    Я бы на вашем месте отлавливал исключение GrabTimeoutError и повторял при необходимости запрос (с ограничением количества попыток, естественно).
    Ответ написан
    Комментировать
  • Каким образом у разных объектов оказывается общим один параметр?

    @throughtheether
    human after all
    ЧЯДНТ?
    Используете атрибут класса, а не экземпляра класса.
    Сделайте примерно так:
    class SubClass:
        def __init__(self):
            self.calls=set()
        def add(self,data):
            self.calls.add(data)

    И аналогично в SomeClass.
    Ответ написан
    3 комментария
  • Возможно ли использовать Python или Ruby для создания интерактивных Web страниц?

    @throughtheether
    human after all
    Хочу научиться создавать интерактивные Web страницы, но изучать JavaScript не очень-то хочется. Возможно ли реализовать интерактивность, скажем, на Python
    Есть такая вещь, как brython. Местами тормозит, но, может быть, под вашу задачу подойдет.
    Ответ написан
    Комментировать
  • Где взять практические задачи?

    @throughtheether
    human after all
    Ответ написан
    Комментировать
  • Как правильно написать консольную утилиту на Python?

    @throughtheether
    human after all
    Использовал docopt. Для моих скромных целей хватило.
    Ответ написан
    Комментировать
  • Отправка команд через веб интерфейс?

    @throughtheether
    human after all
    Тикните носом что ковирять ?
    Например, bottle.py в качестве веб-сервера, subprocess для исполнения команд. Если хочется обойтись стандартной библиотекой, то SimpleHTTPServer/BaseHTTPServer в случае python2, http.server в случае python3.
    Ответ написан
    Комментировать
  • Как грамотно сохранять множество в питоне при выходе из программы?

    @throughtheether
    human after all
    Можете воспользоваться модулем struct:
    import random
    import struct
    >>> my_set={random.randint(1,1000) for _ in xrange(10)}
    >>> my_set
    set([246, 898, 918, 113, 11, 677, 82, 374, 184, 101])
    data = struct.pack("I%dH" % len(my_set), len(my_set), *list(my_set))
    >>> data
    '\n\x00\x00\x00\xf6\x00\x82\x03\x96\x03q\x00\x0b\x00\xa5\x02R\x00v\x01\xb8\x00e\x00'
    
    
    (data_len,)=struct.unpack("I", data[:struct.calcsize("I")])
    >>> data_len
    10
    
    >>> reconstructed_set=set(struct.unpack("%dH" % data_len,data[struct.calcsize("I"):]))
    >>> reconstructed_set
    set([898, 246, 11, 113, 82, 918, 184, 374, 101, 677])
    >>> reconstructed_set==my_set
    True

    В этом примере содержимое data можно, на мой взгляд, сохранять в файл, открытый для записи в двоичном режиме. Здесь представлена длина "массива", затем его составляющие.
    Ответ написан
    5 комментариев
  • Как написать функцию которая удалит из списка чисел те, что совпадают с заданым числом I?

    @throughtheether
    human after all
    Если я вас правильно понял, то примерно так:
    >>> b=['1234', '5678', '2300', '1615']
    >>> string='1000'
    >>> c=[item for item in b if not set(item)&set(string)]
    >>> c
    ['5678']
    Ответ написан
    2 комментария
  • Как написать функцию, которая бы создала list с элементами из в двух других lists чьи индексы совпадают?

    @throughtheether
    human after all
    >>> a = [1,2,3,10,5]
    >>> b = [1,2,5,10,8]
    >>> c=[u for (u,v) in zip(a,b) if u==v]
    >>> c
    [1, 2, 10]

    В случае больших списков можно использовать izip из модуля itertools.
    Ответ написан
    Комментировать
  • Python. Как реализовать цикл внутри вложенного списка?

    @throughtheether
    human after all
    Если я вас правильно понял, то так:
    import itertools
    lst = [
       ['aa1','aa2'],
       ['bb1','bb2','bb3'],
       ['cc1','cc2','cc3','cc4',],
           ]
    for item in itertools.product(*lst):
            # do stuff
            print item

    Результат:
    >>> 
    ('aa1', 'bb1', 'cc1')
    ('aa1', 'bb1', 'cc2')
    ('aa1', 'bb1', 'cc3')
    ('aa1', 'bb1', 'cc4')
    ('aa1', 'bb2', 'cc1')
    ('aa1', 'bb2', 'cc2')
    ('aa1', 'bb2', 'cc3')
    ('aa1', 'bb2', 'cc4')
    ('aa1', 'bb3', 'cc1')
    ('aa1', 'bb3', 'cc2')
    ('aa1', 'bb3', 'cc3')
    ('aa1', 'bb3', 'cc4')
    ('aa2', 'bb1', 'cc1')
    ('aa2', 'bb1', 'cc2')
    ('aa2', 'bb1', 'cc3')
    ('aa2', 'bb1', 'cc4')
    ('aa2', 'bb2', 'cc1')
    ('aa2', 'bb2', 'cc2')
    ('aa2', 'bb2', 'cc3')
    ('aa2', 'bb2', 'cc4')
    ('aa2', 'bb3', 'cc1')
    ('aa2', 'bb3', 'cc2')
    ('aa2', 'bb3', 'cc3')
    ('aa2', 'bb3', 'cc4')
    Ответ написан
    2 комментария