Как создать случайную строку в 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
Ответы:
Создание строк из (например) символов нижнего регистра:
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'
источник
randomword(length, source_alpha=string.lowercase)
иxrange(length)
.string.ascii_lowercase
os.urandom(length)
отвечает на исходный вопрос, а @sth неправильно прочитал мысли OP.random.choices
будет быстрее.Поскольку этот вопрос довольно, ммм, случайный, это может сработать для вас:
>>> import uuid >>> print uuid.uuid4() 58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
источник
str(uuid.uuid4())
если хотите использовать его как строку.str(uuid.uuid4()).split("-")[0]
Выход:'4bcb6450'
>>> import random >>> import string >>> s=string.lowercase+string.digits >>> ''.join(random.sample(s,10)) 'jw72qidagk
источник
random.choice
тоже небезопасно. Используйтеrandom.SystemRandom().choice()
или используйтеos.urandom()
напрямую .lowercase
следует заменить наascii_lowercase
Ответ на исходный вопрос:
Цитата: http://docs.python.org/2/library/os.html
источник
Вы можете создавать случайные символы ascii, например:
import random print chr(random.randint(0,255))
А затем создайте более длинную строку, например:
len = 50 print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
источник
''.join(map(chr, random.randint(0,256) for _ in xrange(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)
источник
Иногда мне нужны случайные строки, которые были наполовину произносимыми, наполовину запоминающимися.
import random def randomWord(length=5): consonants = "bcdfghjklmnpqrstvwxyz" vowels = "aeiou" return "".join(random.choice((consonants, vowels)[i%2]) for i in range(length))
Затем,
>>> randomWord() nibit >>> randomWord() piber >>> randomWord(10) rubirikiro
Чтобы избежать слов из 4 букв, не устанавливайте
length
значение 4.Джим
источник
random_name = lambda length: ''.join(random.sample(string.letters, length))
длина должна быть <= len (string.letters) = 53. Пример результата
>>> [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'] >>>
Наслаждаться. ;)
источник
Установите этот пакет:
И используйте этот код:
from py_essentials import simpleRandom as sr print(sr.randomString(4))
Более подробная информация о методе и других параметрах доступна здесь.
источник
В
python3.6+
вы можете использоватьsecrets
модуль :При тестировании генерации
768bit
токенов безопасности я обнаружил:random.choices()
-0.000246
секундыsecrets.choice()
-0.003529
секундыЭти
secrets
модули медленнее , но за пределами тестирования является то , что вы должны использовать для криптографических целей:import string, secrets def random_string(size): letters = string.ascii_lowercase+string.ascii_uppercase+string.digits return ''.join(secrets.choice(letters) for i in range(size)) print(random_string(768))
источник
Эта функция генерирует случайную строку, состоящую из прописных и строчных букв, цифр, передает разделитель длины, no_of_blocks, чтобы указать формат вашей строки
например: len_sep = 4, no_of_blocks = 4 сгенерирует следующий шаблон,
Где разделитель длины добавит "-" после 4 символов.
ни один из блоков не сгенерирует следующий набор символов в виде строки
если требуется одна случайная строка, просто оставьте переменную no_of_blocks равной 1 и len_sep, чтобы указать длину случайной строки.
например: len_sep = 10, no_of_blocks = 1, сгенерирует следующий шаблон, т.е. случайная строка длиной 10 ,
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
источник
import random import string def get_random_string(size): chars = string.ascii_lowercase+string.ascii_uppercase+string.digits ''.join(random.choice(chars) for _ in range(size)) print(get_random_string(20)
вывод: FfxjmkyyLG5HvLeRudDS
источник
попробуйте импортировать указанный ниже пакет из случайного импорта *
источник