Рубрики
Без рубрики

Как генерировать случайные строки в Python

В этой статье мы посмотрим, как мы можем генерировать случайные строки в Python. Как следует из названия, нам нужно создать случайную последовательность символов,

Автор оригинала: Pankaj Kumar.

В этой статье мы посмотрим, как мы можем генерировать случайные строки в Python. Как предполагает имя, нам нужно создать случайную последовательность символов, она подходит для Случайные модуль.

Здесь есть различные подходы, поэтому мы начнем с самого интуитивного; используя рандомизированные целые числа.

Построить строку из случайной целочисленной последовательности

Как вы можете знать, Chr (целое число) Карты целочисленного персонажа, предполагая, что он находится в пределах пределов ASCII. (Принято быть 255 для этой статьи)

Мы можем использовать это отображение, чтобы масштабировать любое целое число к уровню символов ASCII, используя chr (x) , где х генерируется случайным образом.

import random

# The limit for the extended ASCII Character set
MAX_LIMIT = 255

random_string = ''

for _ in range(10):
    random_integer = random.randint(0, MAX_LIMIT)
    # Keep appending random characters using chr(x)
    random_string += (chr(random_integer))

print(random_string, len(random_string))

Образец вывода

ð|ÒR:
     Rè 10

Здесь, хотя длина строки, кажется, составляет 10 символов, мы получаем странные символы вместе с новыми линиями, пробелами и т. Д.

Это потому, что мы считали весь набор символов ASCII.

Если мы хотим иметь дело с только английскими алфавитами, мы можем использовать их значения ASCII.

import random

random_string = ''

for _ in range(10):
    # Considering only upper and lowercase letters
    random_integer = random.randint(97, 97 + 26 - 1)
    flip_bit = random.randint(0, 1)
    # Convert to lowercase if the flip bit is on
    random_integer = random_integer - 32 if flip_bit == 1 else random_integer
    # Keep appending random characters using chr(x)
    random_string += (chr(random_integer))

print(random_string, len(random_string))

Образец вывода

wxnhvYDuKm 10

Как видите, теперь у нас есть только верхние и строчные буквы.

Но мы можем избежать всех этих хлопот, и у Питона делают работу для нас. Python дал нам строка Модуль для именно для этого!

Давайте посмотрим, как мы можем сделать то же самое, используя только пару строк кода!

Генерировать случайные строки в Python с помощью модуля строки

Список символов, используемых с помощью строк Python, определяется здесь, и мы можем выбрать среди этих групп символов.

Затем мы будем использовать Random.Choice () Способ случайно выбирать символы вместо использования целых чисел, поскольку мы делали ранее.

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

import random
import string

def random_string_generator(str_size, allowed_chars):
    return ''.join(random.choice(allowed_chars) for x in range(str_size))

chars = string.ascii_letters + string.punctuation
size = 12

print(chars)
print('Random String of length 12 =', random_string_generator(size, chars))

Здесь мы указали разрешенный список символов как String.Ascii_letters (Верхние и строчные буквы), наряду с string.puncturation (все знаки препинания).

Теперь наша главная функция была только 2 строки, и мы могли бы случайно выбрать символ, используя Random.Choice (Set) Отказ

Образец вывода

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Random String of length 12 = d[$Om{;#cjue

Мы действительно создали случайную строку, а строка Модуль позволяет легко манипулировать между наборами символов!

Сделайте случайное поколение более безопасным

Хотя приведенное выше метод случайного поколения работает, если вы хотите сделать вашу функцию более криптографически безопасным, используйте Random.systemrandom () функция.

Пример случайной генераторной функции показан ниже:

import random
import string

output_string = ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits) for _ in range(10))

print(output_string)

Выход

iNsuInwmS8

Это гарантирует, что ваше поколение строки криптографически безопасно.

Случайное поколение UUID

Если вы хотите создать случайную UUID Строка, UUID Модуль полезен для этой цели.

import uuid

# Generate a random UUID
print('Generated a random UUID from uuid1():', uuid.uuid1())
print('Generated a random UUID from uuid4():', uuid.uuid4())

Образец вывода

Generated a random UUID from uuid1(): af5d2f80-6470-11ea-b6cd-a73d7e4e7bfe
Generated a random UUID from uuid4(): 5d365f9b-14c1-49e7-ad64-328b61c0d8a7

Заключение

В этой статье мы узнали, как мы могли бы создавать случайные строки в Python, с помощью Случайные и строка модули.

Рекомендации