Генерация рандомной строки
Меня интересует, как можно генерировать строку вида sa32Asf7w1 с помощью библиотеки random в python. Первые 4 символа — рандомный набор букв и цифр, с 6 по 10 то же самое. 5 символ — рандомная заглавная буква.
Отслеживать
19.6k 6 6 золотых знаков 22 22 серебряных знака 56 56 бронзовых знаков
задан 29 окт 2020 в 17:53
135 1 1 серебряный знак 8 8 бронзовых знаков
Используйте random.choices
29 окт 2020 в 18:05
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
как вариант — сделайте словарь букв и цифр и выбирайте оттуда, а 5 символ выберите из отдельного словаря (где только большие буквы) или из того же словаря, только с границами, соответствующими большие буквы
итоговый вариант:
import random import string text = [random.choice(string.ascii_lowercase + string.digits if i != 5 else string.ascii_uppercase) for i in range(10)] print(''.join(text))
import random letters = ['A', 'B', 'C', 'a', 'b', 'c', '1', '2', '3'] text = [letters[random.randint(0, len(letters))] for _ in range(10)] text[5] = letters[random.randint(0, 3)] print(''.join(text))
да, через choice компактнее код
import random text = [random.choice('abc123') for _ in range(10)] text[5] = random.choice('ABC') print(''.join(text))
text = [random.choice('abc123') if i != 5 else random.choice('ABC') for i in range(10)] print(''.join(text))
или так (еще на длине немного сэкономить) 🙂 :
text = [random.choice('abc123' if i != 5 else 'ABC') for i in range(10)]
Как сгенерировать случайную строку в 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(), чтобы объединить их и вернуть случайно сгенерированную строку.

Что, если мы хотим сохранить случайный размер строки в качестве переменной, скажем, от 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 — генерация случайной строки
Часто в проекте необходима генерация случайной строки. Например в OAuth случайная строка, которая генерируется при каждом запросе, используется для подтверждения уникальности аапроса.
В Python генерация случайной строки, состоящая только из ASCII символов верхнего регистра, может быть выполнена так:
from random import choice from string import ascii_uppercase print(''.join(choice(ascii_uppercase) for i in range(12)))
QPUPZVVHUNSN EFJACZEBYQEB QBQJJEEOYTZY EOJUSUEAJEEK QWRWLIWDTDBD
Для генерации случайной строки из любых ASCII символов, используйте следующий код:
from random import choice from string import ascii_letters print(''.join(choice(ascii_letters) for i in range(12)))

Есди нужна строка длиной больше 12 символов, замените 12 на любое число.
Генерация случайной строки только из цифр в Python
Если вам нужна случайная строка, состоящая только из цифр:
from random import choice from string import digits print(''.join(choice(digits) for i in range(12)))
960405692468 476412735488 745098255209
Генерация случайной строки в Python


Добавить в избранное
(1 оценок, среднее: 5,00 из 5)

В языке Python различные задачи выполняются с помощью встроенных библиотек. В Python модуль random используется для генерации случайной строки. Случайная строка содержит числа, буквы и символы с любым шаблоном. Проблема создания случайных строк широко распространена, но некоторые приложения могут требовать, чтобы их можно было улучшить и дать возможность создавать случайные последовательности чисел и букв для приложений.
Есть два метода генерации случайных строк. Эти методы включают функции random.choice() и secret.choice(). Теперь давайте посмотрим, как создать случайную строку с помощью этих двух методов. Мы также создаем безопасную случайную строку с помощью метода random.SystemRandom().
Используйте random.choice():
В Python функция random.choice() используется для создания повторяющейся последовательности букв и цифр. Используя функцию random.choice(), мы создаем программу, которая будет генерировать случайную строку. Мы используем функцию random.choice(), чтобы выбрать один элемент из любой серии, и тем самым мы можем воспроизвести буквы.
В этом случае случайная строка состоит из всех символов верхнего регистра. Если мы хотим получить символы нижнего регистра, мы используем константу string.ascii_lowercase вместо string.ascii_uppercase.
Для реализации кода Python сначала мы устанавливаем spyder5. Затем мы создаем новый проект для кода, нажав на клавиатуре кнопку «Ctrl + N». Имя нового файла — «untitled.2».

В этом примере мы генерируем случайные строки с помощью функции random.choices(). Сначала мы импортируем строковый модуль и случайный модуль. Строковый модуль состоит из разных строковых констант. Эта константа содержит символы ASCII. Для всех регистров существуют различные константы (строчные, прописные буквы, цифры и символы). Эти константы используются в качестве источника для генерации случайных строк. Мы генерируем случайную строку, передавая константу случайному модулю. Строка string.ascii_uppercase дает все символы верхнего регистра от «a» до «z». Эти данные используются в качестве источника для генерации случайных строк.
Мы инициализируем размер строки, присваивая N. значение «9». Это показывает, что нам нужно 9 символов в случайной строке. Мы определяем функцию random.choice(), передавая два параметра. Эти параметры включают string.ascii_uppercase и string.digits.
Читать Как создать исполняемые файлы для Python (от .PY до .EXE)
Здесь мы используем функцию random.choice() при каждом повторении для создания строковой константы. Эта константа выбирает одну букву из этой константы. Затем мы добавляем эту букву в строковую переменную с помощью функции join(). Теперь оператор печати печатает последнюю строку до завершения цикла. Эта функция возвращает список из k размеров выбранных символов. Здесь k показывает размер случайной строки. Для запуска кода мы нажимали на клавиатуре кнопку «F5».

Мы вызываем здесь функцию random.choice() и повторяем ее k раз. На выходе этого кода мы получаем сгенерированную случайную строку WBTF6Y60J.
Используйте secrets.choice():
В Python функция secret.choice() используется для генерации случайной строки. Это более надежный метод, чем random.choice(). Это генератор случайных строк, который не позволяет двум методам подписывать функцию secrets.choice() от одновременного достижения идентичного результата.

В этом коде мы генерируем случайные строки с помощью функции secrets.choice(). Сначала мы импортируем секретный модуль и строковый модуль. Строковый модуль состоит из разных строковых констант. Эта константа содержит символы ASCII. Для всех случаев есть отличительные константы.
Мы определяем функцию secrets.choice(), передавая два параметра. Эти параметры включают string.ascii_uppercase и string.digits.
Здесь мы используем функцию secret.choice() при каждом повторении для создания строковой константы. Эта константа выбирает одну букву из этой константы. Затем мы добавляем эту букву в строковую переменную с помощью функции join(). Теперь оператор печати печатает последнюю строку до завершения цикла.

Оператор печати печатает сгенерированную случайную строку, которая является PV5E3LOFN.
Создание криптографически безопасной случайной строки:
Метод random.SystemRandom() также используется для создания случайной строки. Если мы хотим сгенерировать защищенную строку, мы используем эту функцию.
Python может получить это, применив класс random.SystemRandom. Это гарантирует невозможность воспроизведения серии символов. Функция random.choice() не может использовать безопасный генератор псевдо-чисел.

В этом коде мы генерируем случайные строки с помощью функции secrets.choice(). Строка .ascii_letters дает символы из. Эти данные используются как ресурс для генерации случайных строк. Определяем длину веревки. В этом случае нам нужно 12 символов в случайной строке. Мы определяем функцию random.SystemRandom(), передавая два параметра. Эти параметры включают string.ascii_letters и string.digits.