파이썬으로 숫자를 문자열(영어 단어)로 바꾸기
파이썬에서 문자열에 포함된 숫자를 'zero', 'one', 'two' 같은 영어 단어로 변환하려면 딕셔너리(dictionary) 객체를 활용하는 것이 가장 간단합니다. 각 숫자를 키(key)로, 해당 숫자의 영어 단어 표현을 값(value)으로 저장하는 딕셔너리를 먼저 정의합니다.
dct = {'0': 'zero', '1': 'one', '2': 'two', '3': 'three', '4': 'four',
'5': 'five', '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine'}1. 결과를 담을 새 문자열 초기화
변환된 결과를 저장할 빈 문자열 객체를 하나 생성합니다.
newstr = ''
2. 반복문으로 각 문자 검사하기
for 루프를 사용해 입력 문자열의 각 문자(ch)를 하나씩 순회하면서, 내장 함수 isdigit()으로 해당 문자가 숫자인지 판별합니다.
- 숫자인 경우: 해당 문자를 딕셔너리의 키로 사용해 대응되는 영어 단어 값을 찾아 newstr에 추가합니다.
- 숫자가 아닌 경우: 원본 문자 ch를 그대로 newstr에 추가합니다.
전체 코드
string = 'I have 3 Networking books, 0 Database books, and 8 Programming books.'
dct = {'0': 'zero', '1': 'one', '2': 'two', '3': 'three', '4': 'four',
'5': 'five', '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine'}
newstr = ''
for ch in string:
if ch.isdigit() == True:
dw = dct[ch]
newstr = newstr + dw
else:
newstr = newstr + ch
print(newstr)실행 결과
실행하면 문자열 안의 모든 숫자가 영어 단어로 치환되어 아래와 같은 결과가 출력됩니다.
I have three Networking books, zero Database books, and eight Programming books.
동작 원리 정리
이 방식의 핵심은 isdigit() 메서드입니다. 이 메서드는 문자열의 각 문자가 0~9 사이의 숫자인지 여부를 불리언 값으로 반환하므로, 조건문과 함께 사용하면 숫자와 일반 문자를 쉽게 구분할 수 있습니다. 이후 딕셔너리 조회만으로 숫자를 원하는 단어 형태로 즉시 변환할 수 있습니다.
참고로, 성능이 중요한 대용량 텍스트 처리 시에는 문자열 연결(newstr = newstr + dw) 대신 리스트에 요소를 모은 뒤 마지막에 ''.join()으로 합치는 방식이 더 효율적입니다.