[Python TIL] 아스키 코드(ASCII Code) 관련 함수 (feat. isdigit())

문자열을 다루다 보면 문자를 숫자로 바꾸거나, 숫자를 문자로 바꿔야 할 일이 종종 생긴다. 예를 들어 암호화, 정렬, 조건 분기 등에서 자주 사용된다. 이때 필요한 것이 바로 **아스키 코드(ASCII Code)**이다.
🔤 아스키 코드란?
ASCII는 American Standard Code for Information Interchange의 약자로, 문자를 고유한 숫자(십진수)로 변환한 표준이다.
예시:
'A'
→ 65'a'
→ 97'0'
→ 48
즉, 컴퓨터는 문자 자체를 인식하지 못하므로, 내부적으로는 이 숫자값(아스키 코드)을 통해 문자를 표현한다.
🐍 Python에서 아스키 코드 변환 함수
파이썬에서는 아주 간단한 내장 함수 두 개로 아스키 코드를 자유롭게 다룰 수 있다.
1. ord()
함수 – 문자를 아스키 코드로 변환
print(ord('A')) # 출력: 65
print(ord('a')) # 출력: 97
print(ord('0')) # 출력: 48
설명:
ord()
함수는 문자 하나를 인자로 받아 해당 문자의 아스키 코드 값을 반환한다.주의: 인자로는 한 글자만 넣어야 한다. 여러 글자를 넣으면 오류가 발생한다.
2. chr()
함수 – 아스키 코드를 문자로 변환
print(chr(65)) # 출력: 'A'
print(chr(97)) # 출력: 'a'
print(chr(48)) # 출력: '0'
- 설명:
chr()
함수는 아스키 코드(정수)를 인자로 받아 해당하는 문자를 반환한다.
✍️ 실전 예제
✔️ 문자열을 아스키 코드로 변환하는 예제
text = "Hello"
ascii_list = [ord(char) for char in text]
print(ascii_list)
# 출력: [72, 101, 108, 108, 111]
✔️ 아스키 코드 리스트를 문자열로 복원하는 예제
ascii_list = [72, 101, 108, 108, 111]
text = ''.join(chr(code) for code in ascii_list)
print(text)
# 출력: 'Hello'
문제
문자열은 빼달라구!
엘리스 토끼는 학교에서 과제를 하고 있습니다. 노트북이 망가져서 태블릿 PC로 작업을 하고 있는데, 화면이 너무 작아서 자꾸 오타가 나네요. 특히나 숫자를 치고 싶은데 자꾸 문자가 섞여서 쳐지는 바람에 과제 제출기한을 놓쳤습니다! 이번 일을 계기로 엘리스 토끼는 다짐했어요.
‘문자와 숫자를 섞어서 치더라도 숫자만 나오게 하는 프로그램을 짜야겠다!’ 엘리스 토끼를 도와서 프로그램을 짜볼까요?
입력 예시
12qwe34asf45
출력 예시
123445
지시사항을 보며 코딩하러 가볼까요?
지시사항
문자열을 입력받으세요.
입력 받은 문자열에서 문자 또는 기호를 제외한 숫자만 추출해서 문자열 형태로 출력하는 코드를 작성하세요.
- 참고로 0~9는 ASCII 코드가 48~57이다.
정답
# 1번을 해보세요.
text = input()
arr = []
# 2번을 해보세요.
for i in text:
if ord(i) >= 48 and ord(i) <= 57:
arr.append(i)
result = ''.join(arr)
print(result)
다른 방법 - isdigit() 메소드
✅ str.isdigit()
문법
문자열.isdigit()
설명: 문자열이 숫자로만 구성되어 있는지 확인해서
True
또는False
를 반환한다.문자열의 모든 문자가 숫자(0~9)일 때만
True
.
📌 예시
print("123".isdigit()) # 👉 True
print("12a3".isdigit()) # 👉 False
print("".isdigit()) # 👉 False (빈 문자열은 False)
print("0123".isdigit()) # 👉 True (주의! 유니코드 숫자도 True가 나올 수 있다)
⚠️ 주의할 점
"½"
같은 분수 문자나"②"
같은 유니코드 숫자도True
가 나올 수 있다.'-123'
이나'3.14'
는False
이다. 부호나 소수점이 들어가면isdigit()
이False
를 반환한다.
숫자 판별 시, ASCII 값 직접 비교 vs isdigit() 메소드
ASCII 값을 직접 비교하는 방법과 isdigit() 메소드를 사용하는 방법은 각각의 특성과 의도에 따라 선택할 수 있다.
ASCII 값을 직접 비교하는 방법:
장점:
* 코드가 명시적이어서, '0'부터 '9'까지의 정확한 범위를 직접 지정할 수 있다.
* 단순한 조건이므로 아주 기본적인 경우나 특정 환경(예: ASCII 기반의 시스템)에서는 명확하게 사용할 수 있다.
단점:
오직 ASCII 코드에 해당하는 숫자만 처리한다. 즉, 유니코드로 표현된 다른 숫자들(예: 아라비아 숫자, 인도 숫자 등)은 인식하지 못한다.
경계값(48과 57)을 직접 다뤄야 하므로 실수나 오타가 발생할 여지가 있다.
isdigit() 메소드 사용:
장점:
문자열의 각 문자가 숫자인지 간단하게 확인할 수 있어 가독성이 좋다.
유니코드 숫자도 인식하기 때문에 국제적인 데이터 처리에 유리하다.
단점:
아주 미세한 성능 차이가 있을 수 있는데, 많은 양의 데이터를 처리할 때는 ASCII 비교에 비해 약간 느릴 수 있다. 다만, 일반적인 경우엔 큰 문제가 되지 않는다.
ASCII 숫자 외에도 숫자로 간주되는 다른 문자들도 True를 반환할 수 있으므로, 오직 '0'부터 '9'만을 엄격하게 필터링하려는 경우에는 의도와 다르게 동작할 수 있다.
💡 아스키 코드를 어디에 활용할 수 있을까?
활용 분야 | 설명 |
🔐 암호화 | 문자를 아스키 코드로 변환 후 수치 조작 |
🔡 정렬 | 문자열 정렬 시 내부적으로 아스키 순서를 기준으로 정렬됨 |
🎮 게임 개발 | 키보드 입력 처리에 아스키 코드 사용 |
🧠 알고리즘 | 조건 분기나 문자열 연산에 자주 활용됨 |
✅ 정리
ord()
→ 문자 → 아스키 코드chr()
→ 아스키 코드 → 문자문자열을 숫자로 바꿔 처리하고 싶을 때 유용
알고리즘 문제 풀 때 자주 등장하니 꼭 숙지하자!
Subscribe to my newsletter
Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

KiwiChip
KiwiChip
I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).