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

Python에서 대문자와 숫자로 구성된 랜덤 문자열 생성하기

Python에서 대문자 알파벳과 숫자를 조합한 임의의 문자열을 생성하려면 random.choice() 함수를 활용할 수 있습니다. 이 함수는 주어진 선택 목록에서 무작위로 하나의 문자를 반환하며, 이를 반복문으로 여러 번 호출한 뒤 결과를 하나의 문자열로 합치면 됩니다.

기본적인 함수 구현

선택 가능한 문자 집합은 string.ascii_uppercase(대문자 알파벳)와 string.digits(숫자 0~9)를 연결하여 만듭니다.

import string
import random

def get_random_string(length):
    random_list = []
    for _ in range(length):
        random_list.append(random.choice(string.ascii_uppercase + string.digits))
    return ''.join(random_list)

print(get_random_string(10))

실행하면 다음과 같이 길이 10의 랜덤 문자열이 출력됩니다:

'35WO8ZYKFV'

한 줄로 간결하게 작성하기

리스트 컴프리헨션과 join()을 조합하면 위 코드를 한 줄로 줄일 수 있습니다:

>>> ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
'35WO8ZYKFV'

Python 3의 random.choices() 활용

Python 3에서는 random.choices() 메서드를 사용할 수 있습니다. 이 함수는 두 번째 인자인 k로 추출할 문자 개수를 지정할 수 있어 더욱 짧은 코드로 작성됩니다:

>>> ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
'35WO8ZYKFV'

참고 사항

예전 Python 2 코드에서는 xrange가 사용되었지만, Python 3에서는 일반 range로 대체되었습니다. 또한 비밀번호나 인증 토큰처럼 보안이 중요한 용도라면 random 모듈 대신 암호학적으로 안전한 secrets 모듈을 사용하는 것이 권장됩니다:

import secrets
import string

secure_string = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(10))
print(secure_string)