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

파이썬에서 문자열 속 숫자를 영어 단어로 변환하는 방법

파이썬으로 숫자를 문자열(영어 단어)로 바꾸기

파이썬에서 문자열에 포함된 숫자를 '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()으로 합치는 방식이 더 효율적입니다.