Автор оригинала: 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, с помощью Случайные
и строка
модули.
Рекомендации
- Журналдав Статья на генерации случайных струн
- Stackoverflow вопрос на случайном образовании строки