Как сгенерировать случайную строку в Python
Случайные строки и числа полезны, когда дело касается безопасности. В информатике предсказуемые объекты менее безопасны, и наоборот, менее предсказуемые элементы более безопасны. Когда мы подписываемся на услуги, нам нужно предоставить пароль. Мы можем использовать эти случайные строки в качестве пароля, который менее предсказуемы и более безопасен.
Python предоставляет несколько пакетов, которые работают со случайной строкой, числами и даже криптографией.
Создать случайную строку в Python
Чтобы сгенерировать случайную строку в Python, используйте модуль строки и метод random.choices().
Строковый модуль в Python содержит различные строковые константы, включая символы ASCII для всех случаев. Он также включает отдельные константы для прописных и строчных букв, цифр и специальных символов.
Модуль random в Python выполняет случайные генерации.
Пример
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