파이썬에서 랜덤 문자열 만들기
파이썬에서 특정 길이의 랜덤 문자열을 만드는 방법입니다.
우선 문자의 범위를 정합니다. 일단 알파벳(대소문자)만으로 해 봅니다. 문자의 집합은 아래와 같이 만들 수 있습니다.
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)
Upvoted! Thank you for supporting witness @jswit.
중복 횟수에 제한이 없다면, 다음과 같이 만드시면 됩니다.
중복을 허용할 경우에는 그렇게 하면 되겠네요. 감사합니다.