Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 지정된 길이의 랜덤 문자열 생성하기

이 글에서는 Python을 사용해 지정된 길이를 가진 랜덤 문자열을 생성하는 방법을 알아봅니다. 이 기법은 무작위 비밀번호 생성기나 난수성이 필요한 다양한 프로그램을 만들 때 유용하게 활용할 수 있습니다.

random.choices() 사용하기

random 모듈의 choices() 함수는 지정된 문자 집합에서 무작위로 문자를 선택합니다. 선택된 문자들을 join()으로 연결하면 원하는 길이의 랜덤 문자열을 손쉽게 만들 수 있습니다.

예제 코드

import string
import random

# 필요한 문자열 길이
N = 5

# random.choices() 사용
res = ''.join(random.choices(string.ascii_letters + string.digits, k=N))

# 결과 출력
print("Random string : ", res)

실행 결과

위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

Random string : nw1r8

여기서 string.ascii_letters는 영문 대소문자 전체를, string.digits는 숫자 0~9를 의미합니다. 두 집합을 합친 문자 풀에서 k개의 문자를 무작위로 추출해 하나의 문자열로 결합하는 방식입니다.

secrets 모듈 사용하기

보안이 중요한 용도라면 secrets 모듈을 사용하는 것이 좋습니다. 이 모듈은 암호학적으로 안전한 난수를 생성하며, choice() 메서드를 활용해 랜덤 문자열을 만들 수 있습니다. 소문자만 사용하거나 숫자를 포함하는 등 조건을 자유롭게 지정할 수 있다는 점도 장점입니다.

예제 코드

import string
import secrets

# 필요한 문자열 길이
N = 5

# secrets.choice() 사용
res = ''.join(secrets.choice(string.ascii_lowercase + string.digits)
              for i in range(N))

# 결과 출력
print("Random string : ", res)

실행 결과

위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

Random string : p4ylm

이 예제에서는 string.ascii_lowercase(영문 소문자)와 string.digits(숫자)를 결합한 문자 풀에서 N번 반복해 한 글자씩 무작위로 선택했습니다.

정리

일반적인 용도에는 간편한 random.choices()가 적합하고, 비밀번호나 인증 토큰처럼 보안성이 요구되는 경우에는 예측 불가능한 값 생성에 특화된 secrets 모듈을 사용하는 것이 권장됩니다. 상황에 맞는 모듈을 선택해 안전하고 효율적으로 랜덤 문자열을 생성해 보세요.