DevGang
Авторизоваться

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

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

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

Создать случайную строку в Python

Чтобы сгенерировать случайную строку в Python, используйте модуль строки и метод random.choices().

Строковый модуль в Python содержит различные строковые константы, включая символы ASCII для всех случаев. Он также включает отдельные константы для прописных и строчных букв, цифр и специальных символов.

Модуль random в Python выполняет случайные генерации.

Пример

app.py
import random
import string


def generate_random_string(length):
    letters = string.ascii_lowercase
    rand_string = ''.join(random.choice(letters) for i in range(length))
    print("Random string of length", length, "is:", rand_string)


generate_random_string(8)

Результат

Random string of length 8 is: nwmqqxyf

В этом примере мы генерируем случайную строку на основе длины, которую мы передаем функции.

Внутри функции мы сгенерировали случайную строку с комбинацией нижнего регистра, а затем использовали константу string.ascii_letters. Константа string.ascii_letters включает все строчные и прописные буквы.

Чтобы сгенерировать строку со всеми строчными буквами, используйте свойство string.ascii_lowercase.

На следующем шаге запустите цикл for n количество раз, что является длиной строки, чтобы выбрать один символ из строковой константы с помощью метода random.choice(), присоединить его к строковой переменной и использовать join( ) для формирования случайной строки.

Давайте передадим 16 в качестве длины, и он сгенерирует случайную строку длиной 16 символов.

import random
import string


def generate_random_string(length):
    letters = string.ascii_lowercase
    rand_string = ''.join(random.choice(letters) for i in range(length))
    print("Random string of length", length, "is:", rand_string)


generate_random_string(16)

Результат

Random string of length 16 is: oxepenikhgjmhknp

Сгенерировать случайную строку с прописными буквами

Чтобы сгенерировать строку со всеми прописными буквами, используйте свойство string.ascii_uppercase.

import random
import string


def generate_random_string(length):
    letters = string.ascii_uppercase
    rand_string = ''.join(random.choice(letters) for i in range(length))
    print("Random string of length", length, "is:", rand_string)


generate_random_string(16)

Результат

Random string of length 16 is: MAWNYZRAVTHHGUVX

Каждый раз, когда вы запускаете файл, вы будете получать разные результаты.

Генерация случайной строки только из определенных букв

Вы можете сгенерировать случайную строку только из определенных букв, вместо записи строки .ascii_uppercase, здесь вам нужно написать конкретную строку, из которой вам нужно сгенерировать случайную строку.

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

import random


def generate_random_string(length):
    letters = 'bobbyelevenmilliehopperjane'
    rand_string = ''.join(random.choice(letters) for i in range(length))
    print("Random string of length", length, "is:", rand_string)


generate_random_string(16)

Результат

Random string of length 16 is: leerljlbvmpelony

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

Создать случайную строку без повторяющихся символов

Функция random.choice() может принимать повторяющиеся символы, но метод random.sample() не может принимать повторяющиеся символы, поэтому мы можем использовать метод random.sample() для генерации случайной строки.

import random
import string


def generate_random_string(length):
    letters = string.ascii_lowercase
    rand_string = ''.join(random.sample(letters, length))
    print("Random string of length", length, "is:", rand_string)


generate_random_string(16)

Результат

Random string of length 16 is: gvekicdsfmrxbuyj

Создать случайную буквенно-цифровую строку в Python

Чтобы сгенерировать буквенно-цифровую случайную строку в Python, используйте константы string.ascii_letters и string.digits, чтобы получить комбинации букв и цифр.

import random
import string


def generate_alphanum_random_string(length):
    letters_and_digits = string.ascii_letters + string.digits
    rand_string = ''.join(random.sample(letters_and_digits, length))
    print("Alphanum Random string of length", length, "is:", rand_string)


generate_alphanum_random_string(16)

Результат

Alphanum Random string of length 16 is: n7b1K3wavxXrDdjO

Использование secrets.choice()

Python предоставляет пакет secrets для генерации криптографически более безопасных случайных чисел. У метода secrets.choice()  есть внутренний алгоритм, построенный таким образом, что он генерирует менее предсказуемые случайные числа.

import secrets
import string


def generate_alphanum_crypt_string(length):
    letters_and_digits = string.ascii_letters + string.digits
    crypt_rand_string = ''.join(secrets.choice(
        letters_and_digits) for i in range(length))
    print("Cryptic Random string of length", length, "is:", crypt_rand_string)


generate_alphanum_crypt_string(16)

Результат

Cryptic Random string of length 16 is: Pq9hga3IyExXKVhX
#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить