Случайные строки в 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
Ответы
Ответ 1
Генерация строк из (например) строчных символов:
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'
Ответ 2
Поскольку этот вопрос справедлив, uh, random, это может сработать для вас:
>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
Ответ 3
>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
Ответ 4
Ответ на исходный вопрос:
os.urandom(n)
Цитата: http://docs.python.org/2/library/os.html
Возвращает строку из n случайных байтов, подходящих для использования в криптографии.
Эта функция возвращает случайные байты из произвольной случайной случайности источник. Возвращенные данные должны быть непредсказуемыми для криптографических приложений, хотя его точное качество зависит от ОС реализация. В UNIX-подобной системе это будет запрашивать /dev/urandom, и в Windows он будет использовать CryptGenRandom. Если источник случайности не найден, NotImplementedError будет поднят.
Для удобного интерфейса с генератором случайных чисел по вашей платформе, см. random.SystemRandom.
Ответ 5
Вы можете создавать случайные символы ascii, например:
import random
print chr(random.randint(0,255))
И затем создайте более длинную строку, например:
len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
Ответ 6
Вы не очень много говорили о том, какую случайную строку вам нужно. Но в любом случае вы должны изучить модуль 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)
Ответ 7
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']
>>>
Enjoy.;)
Ответ 8
Иногда я хотел, чтобы случайные строки были полуразборчивыми, полузабываемыми.
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
Чтобы избежать четырехбуквенных слов, не устанавливайте length
4.
Джим
Ответ 9
Установите этот пакет:
pip3 install py_essentials
И используйте этот код:
from py_essentials import simpleRandom as sr
print(sr.randomString(4))
Более подробная информация о методе и других параметрах доступна здесь.
Ответ 10
Эта функция генерирует случайную строку, состоящую из заглавных и строчных букв, цифр, разделителя длины, 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, будет генерировать следующий шаблон, т.е. случайная строка длиной 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
Ответ 11
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