Случайные строки в 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.

Джим

Ответ 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