Найти - Пользователи
Полная версия: randrange() с разделителем как сделать?
Начало » Центр помощи » randrange() с разделителем как сделать?
1 2
cyberbober
Привет! Подскажите как можно выполнить следующее:
генерируем 16 значный номер randrange(1111111111111111,999999999999999)

по итогу мы получим следующее
xxxxxxxxxxxxxxx

Как при генерации получать комбинацию вида
xxxx-xxxx-xxxx-xxxx ?

Спасибо
s0rg
In [1]: a = 'xxxxxxxxxxxxxxx'
In [2]: b = [a[i:i+4] for i in xrange(0, 4)]
In [3]: b
Out[3]: ['xxxx', 'xxxx', 'xxxx', 'xxxx']
In [4]: c = '-'.join(b)
In [5]: c
Out[5]: 'xxxx-xxxx-xxxx-xxxx'
JOHN_16
Не самый красивый и компактный,но простой способ:
>>> s='1111222233334444'
>>>r=[ ]
>>> for i in xrange(len(s)/4):                              
...     r.append(s[4*i:(i+1)*4])
>>> '-'.join(r)
'1111-2222-3333-4444'  
мне время спать, скоро подтянутся спецы по функиональному программированию и начнется война кодов в одну строчку:-) ну или я ошибаюсь
doza_and
:)
JOHN_16
спецы по функциональному программированию
re.sub("(....)(?=.)",r"\1-",s)
"-".join([str(i.data) for i in np.frombuffer(s,dtype='i')])
Shaman
b'-'.join(struct.unpack('4s4s4s4s', str(1111222233334444).encode())).decode()
doza_and
:)
b'-'.join(struct.unpack('4s'*4, str(1111222233334444).encode())).decode()
Shaman
doza_and
Не, этот вариант рассматривался, но был признан ненаглядным и негибким. )
sergeek
ну и я тогда присоединюсь )
n = 1111222233334444
def split(n):
    q, r = divmod(n, 10000)
    return '{}-{}'.format(split(q), r) if q else r
split(n)
Out[3]: '1111-2222-3333-4444'
 
from textwrap import wrap
'-'.join(wrap(str(n),4))
Out[5]: '1111-2222-3333-4444'
py.user.next
doza_and
re.sub("(....)(?=.)",r"\1-",s)
>>> import re
>>> 
>>> s = 'xxxxxxxxxxxxxxxx'
>>> re.sub(r'.{4}', r'\g<0>-', s, 3)
'xxxx-xxxx-xxxx-xxxx'
>>>
alekzp

>>> data
'111122223333444455556666'
>>> print("-".join([data[x:x+4] for x in range(0,len(data),4)]))
1111-2222-3333-4444-5555-6666
>>> 
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