Случайные строки в Python
Как создать случайную строку в Python?
Мне нужно было, чтобы это было число, а затем повторение символов, пока вы не сделаете это то, что я создал
def random_id(length):
number = '0123456789'
alpha = 'abcdefghijklmnopqrstuvwxyz'
id = ''
for i in range(0,length,2):
id += random.choice(number)
id += random.choice(alpha)
return id
9 ответов:
генерация строк из (например) строчных символов:
import random, string def randomword(length): letters = string.ascii_lowercase return ''.join(random.choice(letters) for i in range(length))результаты:
>>> randomword(10) 'vxnxikmhdc' >>> randomword(10) 'ytqhdohksy'
Так как этот вопрос довольно, ЭМ, случайный, это может работать для вас:
>>> import uuid >>> print uuid.uuid4() 58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
>>> import random >>> import string >>> s=string.lowercase+string.digits >>> ''.join(random.sample(s,10)) 'jw72qidagk
ответ на исходный вопрос:
os.urandom(n)цитата из: http://docs.python.org/2/library/os.html
возвращает строку из n случайных байтов, пригодных для криптографического использования.
эта функция возвращает случайные байты из случайности, специфичной для ОС источник. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографические приложения, хотя его точное качество зависит от ОС реализация. На UNIX-подобной системе это будет запрос /dev / urandom, и на Windows, он будет использовать CryptGenRandom. Если источник случайности не найдено, NotImplementedError будет поднят.
для простого в использовании интерфейса к генератору случайных чисел при условии по вашей платформы, см. случайный.SystemRandom.
вы можете создавать случайные символы ascii, такие как:
import random print chr(random.randint(0,255))а затем построить более длинную строку, как:
len = 50 print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
вы не очень много говорили о том, какая случайная строка вам нужна. Но в любом случае, вы должны заглянуть в
randomмодуль.очень простое решение вставлено ниже.
import random def randstring(length=10): valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ' return ''.join((random.choice(valid_letters) for i in xrange(length))) print randstring() print randstring(20)
random_name = lambda length: ''.join(random.sample(string.letters, length))длина должна быть
>>> [random_name(x) for x in range(1,20)] ['V', 'Rq', 'YtL', 'AmUF', 'loFdS', 'eNpRFy', 'iWFGtDz', 'ZTNgCvLA', 'fjUDXJvMP', 'EBrPcYKUvZ', 'GmxPKCnbfih', 'nSiNmCRktdWZ', 'VWKSsGwlBeXUr', 'i stIFGTUlZqnav', 'bqfwgBhyTJMUEzF', 'VLXlPiQnhptZyoHq', 'BXWATvwLCUcVesFfk', 'jLngHmTBtoOSsQlezV', 'JOUhklIwDBMFzrTCPub'] >>>наслаждайтесь. ;)
установить этот пакет:
pip3 install py_essentialsи используйте этот код:
from py_essentials import simpleRandom as sr print(sr.randomString(4))дополнительная информация о методе другие параметры доступны здесь.
эта функция генерирует случайную строку, состоящую из верхних, нижних букв, цифр, передает разделитель длины, no_of_blocks, чтобы указать формат строки
например: len_sep = 4, no_of_blocks = 4 будет генерировать следующий шаблон,
F4nQ-Vh5z-JKEC-WhuS
где, разделитель длины добавит " - " после 4 символов
XXXX -
ни один из блоков не будет генерировать следующий Паттен символов в виде строки
XXXX-XXXX-XXXX-XXXX
если требуется одна случайная строка, просто сохраните переменную no_of_blocks равной 1 и len_sep, чтобы указать длину случайной строки.
например: len_sep = 10, no_of_blocks = 1, будет генерировать следующий шаблон ie. случайная строка длина 10,
F01xgCdoDU
import random as r def generate_random_string(len_sep, no_of_blocks): random_string = '' random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" for i in range(0,len_sep*no_of_blocks): if i % len_sep == 0 and i != 0: random_string += '-' random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)]) return random_string
Comments