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

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

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

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

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

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))
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%'()*+,-./:;?@[\]^_`<|>~ Random String of length 12 = 'MP'?EI$MO%w

Мы используем функцию random.choice() для выбора случайного символа из предоставленной последовательности символов. Затем мы используем цикл for, чтобы запустить его заданное количество раз. Затем мы используем функцию string join(), чтобы объединить их и вернуть случайно сгенерированную строку.

Генерация случайных строк в Python

Что, если мы хотим сохранить случайный размер строки в качестве переменной, скажем, от 8 до 12 символов. Давайте немного подправим нашу функцию, чтобы случайным образом выбрать размер случайной строки.

import random from random import randint import string def random_string_generator_variable_size(min_size, max_size, allowed_chars): return ''.join(random.choice(allowed_chars) for x in range(randint(min_size, max_size))) chars = string.ascii_letters + string.punctuation print('Random String of random length (6-12) =', random_string_generator_variable_size(6, 12, chars))

Вывод: Случайная строка произвольной длины (6–12) = d; @o /? [Yq =

Случайная строка произвольной длины

Код почти такой же, как и у предыдущей функции, за исключением использования функции randint(). Это делается для случайного выбора размера случайно сгенерированной строки.

Генерация случайных UUID

Если вам нужен уникальный идентификатор, основанный на спецификациях RFC-4122, вы можете использовать модуль Python uuid.

import uuid print('Random UUID from uuid1() =', uuid.uuid1()) print('Random UUID from uuid4() =', uuid.uuid4())
Random UUID from uuid1() = dcc1044e-d76b-11e8-b54e-186590db0e15 Random UUID from uuid4() = a0e98c8d-a6fd-4125-bc1c-69ffe6456cb6

Источник

Как сгенерировать случайную строку в 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 

Источник

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

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

Импорт строковых и случайных модулей

Для генерации случайных строк в Python мы используем модули string и random . Модуль string содержит строковые константы Ascii в различных текстовых регистрах, цифрах и т.д. Модуль random , с другой стороны, используется для генерации псевдослучайных значений. В последнем методе мы будем использовать модуль secrets, чтобы помочь нам генерировать криптографически безопасные строки.

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

Случайные строки обычно генерируются и широко используются. Хотя они обслуживают большое количество вариантов использования, наиболее распространенными из них являются случайные имена пользователей-заполнители, случайные номера телефонов, пароли и т.д.

Модуль string

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

  1. String.ascii_letters — возвращает строку букв, содержащих различные регистры.
  2. String.ascii_lowercase — возвращает строку с буквами в нижнем регистре.
  3. String.ascii_uppercase — возвращает строку с прописными буквами.
  4. String.digits — возвращает строку, содержащую цифры
  5. String.punctuation — возвращает строку, содержащую знаки препинания. Я перечислил наиболее часто используемые строковые константы. Однако вы можете просмотреть весь список в документации модуля (модуль String).

Модуль random

Модуль random довольно прост. Он помогает нам выбрать персонажа наугад. Мы используем этот метод для выбора символов из строковой константы.
Однако есть две важные последовательности, о которых вам следует знать:

  1. Random.choices — возвращает элементы в случайном порядке. Здесь персонажи не могут быть уникальными.
  2. Random.sample — возвращает уникальные элементы. Итак, при генерации случайной строки в Python, если вас устраивают повторяющиеся символы, вы можете использовать первый метод, а второй, если вам нужны уникальные символы.

Код и объяснение

import random import string print(random.choices(string.ascii_lowercase)) 

Этот сгенерированный код возвращает один случайный символ. Вы можете изменить метод строковой константы в зависимости от желаемых символов.

Теперь давайте напишем код для генерации строки длиной 5.

import random import string print(''.join(random.choices(string.ascii_lowercase, k=5))) 

Для этого мы передаем еще один аргумент «k», который обозначает размер строки. Этот метод возвращает список символов, поэтому мы используем метод соединения, чтобы преобразовать его в строку.

Строка в разных случаях

В предыдущем методе мы использовали string.ascii_lowercase. Давайте постоянно пробовать буквы, мы также можем объединить два разных типа констант.

Случайная строка в верхнем регистре:

import random import string print(''.join(random.choices(string.ascii_uppercase, k=5))) 
import random import string print(''.join(random.choices(string.ascii_letters, k=5))) 

Объединение различных типов строковых констант:

import random import string print(''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase, k=5))) 

Я не предоставил фрагменты вывода, так как мои результаты будут отличаться от ваших. Кроме того, во всех методах я использовал random.choices. Не стесняйтесь попробовать это, используя также random.sample.

Криптографически безопасные строки

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

Python версии 3.6 и выше предлагает лучший способ создания криптографически безопасной случайной строки. Этот метод использует secrets и строковые методы. secrets очень похож на метод random , подробнее о нем вы можете прочитать здесь.

import secrets import string print(''.join(secrets.choice(string.ascii_uppercase + string.ascii_lowercase) for i in range(7))) 

Методы secrets не имеют метода .choices , который принимает второй аргумент. Следовательно, мы используем цикл и получаем диапазон количества символов.

Заключительные мысли

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

Распространенная ошибка, которую я видел у новичков — это то, что они забывают импортировать модуль перед его использованием. Помните об этом, когда будете практиковаться в использовании методов с другим строковым содержимым.

Источник

Читайте также:  Метод скользящего окна python
Оцените статью