티스토리 뷰

대한민국의 주민등록번호는 숫자 13자리로 구성이 됩니다. 

990120 - 1234567

앞 6자리는 생년월일을 의미하구요.

생년
9 9 0 1 2 0

뒤 7자리는 각각 다음과 같은 의미를 가집니다.

성별 지역번호 검증번호
1 2 3 4 5 6 7

 

여러분이 만약 누군가의 주민등록증을 가지고 있다고 할 때, 처음 2자리를 보면 그 사람이 몇 년도에 태어났는지 알 수 있습니다. 그리고 3~6번째 자리를 보면 양력 생일도 확인할 수 있겠지요. 마찬가지로 성별이나 지역정보도 유추할 수 있을겁니다.

 

이와 같이 전체 주민등록번호 중에서 필요한 만큼의 정보를 끊어서 생년월일, 성별 등의 정보를 알 수 있는데요. 파이썬에서는 슬라이싱이라는 것을 이용해서 데이터를 원하는 만큼 잘라서 가져올 수가 있습니다.

 

그 전에 먼저 익혀둘 것이 있는데요. 여러 문자의 집합으로 구성된 문자열 (또는 나중에 배울 리스트 등) 은 n 번째 인덱스에 있는 문자 (또는 데이터) 하나만을 가져올 수가 있습니다. 이 때 사용되는 것이 바로 대괄호이며 이런 형태로 사용합니다.

 

변수명[인덱스]

 

만약 다음과 같이 주민등록번호를 jumin 이라는 변수에 저장하고, 그 중에 성별 정보를 확인하기 위해서는 jumin[7] 이라고 적으면 됩니다.

jumin = "990120-1234567"

print("성별 : " + jumin[7]) # 성별 : 1

잠깐만요, 가만 보니 성별을 나타내는 1이라는 값은 문자열 중에서 8번째에 위치하고 있습니다. 그런데 왜 7이라고 적었을까요?

 

프로그램에서는 문자열을 포함한 어떤 인덱스 값이 일반적으로 우리가 생각하는 것처럼 1 이 아닌 0 부터 시작합니다. 그래서 성별을 나타내는 1이란 값의 위치는 8 이 아닌 7 이 되는 것이랍니다.

주민등록번호 인덱스
9 0
9 1
0 2
1 3
2 4
0 5
- 6
1 7
... ...

이 부분은 아주 중요하며 처음 배울 때는 많이 혼란스러울 수 있으니 꼭 명심해두셔야 합니다.

 

 

자, 이제 인덱스에 대한 개념 및 사용법을 익혔으니 다시 슬라이싱으로 돌아오겠습니다. 슬라이싱도 인덱스와 마찬가지로 대괄호를 이용하며 필요에 따라 각 영역을 콜론(:) 으로 구분을 짓습니다.

 

변수명[시작인덱스:종료인덱스]

 

처음 입력하는 값은 시작 인덱스, 다음에 입력하는 값은 종료 인덱스가 되는데 만약 [3:7] 과 같이 작성하면 인덱스 기준으로 3부터 7직전까지, 즉 3부터 6까지를 잘라서 가져오는 동작을 하게 됩니다.

 

주민등록번호 정보에서 연, 월, 일 각각 2자리씩을 가져오려면 이렇게 할 수 있답니다.

# jumin = "990120-1234567"

print("연 : " + jumin[0:2]) # 0 부터 2 직전까지 (0, 1) : 99 년
print("월 : " + jumin[2:4]) # 2 부터 4 직전까지 (2, 3) : 01 월
print("일 : " + jumin[4:6]) # 4 부터 6 직전까지 (4, 5) : 20 일

 

슬라이싱을 할 때 값을 비워두면 위치에 따라 처음부터, 또는 끝까지를 의미하게 됩니다.

 

변수명[:인덱스] → 처음부터 인덱스 직전까지 슬라이싱

변수명[인덱스:] → 인덱스부터 끝까지 슬라이싱

변수명[:] 처음부터 끝까지 슬라이싱

 

주민등록번호에서 앞 6자리 또는 뒤 7자리를 가져와보겠습니다.

print("생년월일 : " + jumin[:6]) # 처음부터 6 직전까지 -> jumin[0:6] 과 동일
print("뒤 7자리 : " + jumin[7:]) # 7 부터 끝까지 -> jumin[7:14] 와 동일

 

때로는 데이터에 따라 처음이 아닌 뒤에서부터 슬라이싱을 할 필요도 있는데, 이럴 때는 음수를 이용하면 됩니다. 주민등록번호 뒤 7자리를 가져오되 맨 뒤에서부터 시작하려면 다음과 같이 하면 됩니다. 참고로 맨 처음의 인덱스는 [0] 이지만 맨 뒤의 인덱스는 [-1] 이라는 점 주의해주세요.

print("뒤 7자리 (뒤에부터) : " + jumin[-7:]) # 맨 뒤에서 7번째 위치로부터 끝까지
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함