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

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

Используя String.ascii.letters:

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
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

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

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

Попробовать

В подарок 100$ на счет при регистрации

Получить