string 모듈에서 문자열 집합 가져오기
- ascii_uppercase : 영 대문자
- ascii_lowercase : 영소문자
- ascii_letters: 영 대소문자
- digits : 숫자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import string
# ascii_uppercase
print(string.ascii_uppercase)
>>> 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# ascii_lowercase
print(string.ascii_lowercase)
>>> 'abcdefghijklmnopqrstuvwxyz'
# ascii_letters
print(string.ascii_letters)
>>> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# ascii_digits
print(string.digits)
>>> '0123456789'
# printable
print(string.printable)
>>> '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
비밀번호에 사용할 문자 list 만들기
1
2
3
4
5
6
7
8
9
10
11
# 영대소문자 + 숫자 list
passwd_charset = list(set(string.ascii_letters + string.digits))
# 특수문자 추가
passwd_charset.extend(set(string.printable[62:67]))
passwd_charset.extend(["_", "-"])
# 확인
print(passwd_charset)
>>> ['Z', 'p', 'o', 'K', 'D', 'e', '0', 'h', '4', 'H', 'y', 'U', 'v', 's', '6', '8', 'Y', 'E', 'g', 'O', 'V', '7', 'a', 'm', 't', 'M', 'j', 'N', '1', 'r', '2', '3', 'T', 'x', 'W', '5', 'R', 'F', 'k', 'G', 'c', 'u', 'A', 'I', 'J', 'i', 'P', 'L', 'Q', 'd', 'w', 'n', 'b', 'f', 'z', 'S', 'q', 'B', 'l', 'X', 'C', '9', '#', '%', '!', '"', '$', '_', '-']
random 뽑기
random.choice() 메서드를 이용해서 list에서 랜덤한 원소를 뽑아옵니다.
1
2
3
4
5
6
7
8
9
import random
passwd = ""
for i in range(15):
passwd += random.choice(passwd_charset)
print(passwd)
>>> 'x681GnDOLLL$uMR'
Reference
- https://wikidocs.net/176586