파이썬에서 랜덤 문자열 만들기

파이썬에서 특정 길이의 랜덤 문자열을 만드는 방법입니다.

우선 문자의 범위를 정합니다. 일단 알파벳(대소문자)만으로 해 봅니다. 문자의 집합은 아래와 같이 만들 수 있습니다.

import string
import random

letters_set = string.ascii_letters
print(letters_set)

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

위의 문자열 집합으로부터 무작위로 선택을 해서 리스트(list)를 만들 수 있습니다. 예를 들어 10글자를 무작위로 골라 리스트를 만든다면 아래와 같이 할 수 있습니다.

random_list = random.sample(letters_set,10)
print(random_list)

['d', 'L', 'B', 'v', 'p', 'J', 'h', 'Q', 'C', 's']

이제 이 리스트의 요소를 전부 이어서 하나의 문자열로 만듭니다. join() 함수를 사용하며, 구분자가 없이 합칠 것이므로 ''.join() 이렇게 합니다.

result = ''.join(random_list)
print(result)

dLBvpJhQCs

한가지 알아둘 점은, random.sample()에서 표본의 길이(글자수)는 변수 letters_set에 할당된 문자열의 길이 이하여야 한다는 점입니다. 중복되지 않게 무작위로 골라내기 때문입니다. 중복을 허용하려면 아래와 같이 letters_set의 길이를 늘려주면 되겠습니다.

# 문자열을 2번 반복해서 늘리기(abc -> abcabc)
letters_set = letters_set*2

문자의 범위를 다르게 하고 싶다면 위의 예시에서 변수 letters_set을 다르게 설정하면 되겠습니다. 예를 들어 알파벳 소문자는 아래와 같이 지정합니다.

# 알파벳 소문자
letters_set = string.ascii_lowercase
print(letters_set)

abcdefghijklmnopqrstuvwxyz

다른 경우도 살펴보겠습니다.

# 알파벳 대문자
uppercases = string.ascii_uppercase

# 수자
digits = string.digits

# 기호 - !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~
punctuations = string.punctuation

위의 내용을 조합해서 범위를 지정할 수도 있습니다.

# 알파벳 소문자와 수자
letters_set = string.ascii_lowercase + string.digits
print(letters_set)

abcdefghijklmnopqrstuvwxyz0123456789


@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

Sort:  

Upvoted! Thank you for supporting witness @jswit.
default.jpg

중복 횟수에 제한이 없다면, 다음과 같이 만드시면 됩니다.

''.join([random.choice(letter_set) for i in range(length)])

중복을 허용할 경우에는 그렇게 하면 되겠네요. 감사합니다.

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.027
BTC 60063.85
ETH 2313.06
USDT 1.00
SBD 2.46