Перенести произвольную строку в точный формат - PullRequest
0 голосов
/ 31 марта 2010

Я создаю случайный идентификатор, используя следующий код:

from random import *
import string

# The characters to make up the random password
chars = string.ascii_letters + string.digits

def random_password():

    return "".join(choice(chars) for x in range(32))

Это выведет что-то вроде:

60ff612332b741508bc4432e34ec1d3e

Я бы хотел, чтобы формат был в этом формате:

60ff6123-32b7-4150-8bc4-432e34ec1d3e

Я смотрел на метод .split(), но не могу понять, как это сделать со случайным идентификатором, также дефисы должны быть в этих местах, так что разделение их на определенное количество цифр отсутствует Я спрашиваю, есть ли способ разделить эти случайные идентификаторы на 8 чисел, затем на 4 и т. Д.

Спасибо

Ответы [ 4 ]

4 голосов
/ 31 марта 2010

Модуль uuid может использоваться для генерации UUID.

3 голосов
/ 31 марта 2010

Что не так с генерацией каждой части отдельно? Вот так:

def random_password():
    return "-".join(["".join(choice(chars) for x in range(n)) 
                     for n in (8, 4, 4, 4, 8)])
2 голосов
/ 31 марта 2010

как насчет простого конкатата?

>>> s="60ff612332b741508bc4432e34ec1d3e"
>>> s[:8]+"-"+s[8:12]+"-"+s[12:16]+"-"+s[16:20]+"-"+s[20:]
'60ff6123-32b7-4150-8bc4-432e34ec1d3e'
1 голос
/ 31 марта 2010
pos = set([8, 12, 16])
print "".join(map(lambda x: (x[1], "%s-" % x[1])[x[0] in pos], list(enumerate(random_password()))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...