>>> import netaddr
>>> int(netaddr.IPAddress('77.88.21.8'))
1297618184
>>> str(netaddr.IPAddress(1297618184))
'77.88.21.8'
у меня была задача именно самому выполнить эти преобразования,Держите тогда два модных однострочника:
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
Почему два значения то?Если правильно помню, murmurhash3 генерирует 32- или 128-битный хэш. Два 64-битных числа - это, видимо, две половины результирующего хэша.
>>> 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})
Он мне ни в какую не пишет русскими буквами,Проблемная буква - не русская, а греческая.
Подскажите, что делаю не так?Выводите в консоль символы, которые она не поддерживает. Здесь есть некоторые варианты решения проблемы. Но я вам рекомендую использовать другие возможности отображения информации (т.е. писать в файл или показывать на веб-странице).
>>> 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']
for elem in oko_planet.doc.select('//*[@id="dle-content"]/table//span[@class="ntitle"]/a'):
print elem.text()
Как же сделать так, чтобы и при запуске и дальнейшей работе потребляемая память питонов была не большой?Не видя кода, трудно о чем-либо судить, но совет могу дать. При парсинге, когда вы извлекаете характеристики "единицы" данных (товар интернет-магазина или твит в твиттере), вместо того, чтобы затем предавать в другую функцию список, содержащий множество "единиц" данных, передавайте их по одной при помощи yield.
Хочу научиться создавать интерактивные Web страницы, но изучать JavaScript не очень-то хочется. Возможно ли реализовать интерактивность, скажем, на PythonЕсть такая вещь, как brython. Местами тормозит, но, может быть, под вашу задачу подойдет.
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
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')