프로그램
[파이썬] 문제 : 문자열에서 분수와 단어 분리
오디세이99
2023. 11. 18. 17:07
728x90
반응형
(문제)
문자열에서 원하는 숫자와 문자를 어떻게 뽑나요?
예시 3개)
# >>> decompose('What is 4/7 wallaby, 1/4 parakeet and 3/5 perch?')
# (['wallaby', 'parakeet', 'perch'], [Fraction(4, 7), Fraction(1, 4), Fraction(3, 5)])
# >>> decompose('What is -1/3 ALPACA and -7/9 PARTRIDGE?')
# (['ALPACA', 'PARTRIDGE'], [Fraction(-1, 3), Fraction(-7, 9)])
# >>> decompose('What is 3/7 Manatee, 3/7 cheetah and -4/7 hamster?')
# (['Manatee', 'cheetah', 'hamster'], [Fraction(3, 7), Fraction(3, 7), Fraction(-4, 7)])
(방법)
from fractions import Fraction
import re
def decompose(input_string):
words = input_string.split() # 문자열을 공백으로 분리하여 단어들을 추출
fractions_list = [] # 분수와 단어를 저장할 리스트를 초기화
words_list = []
for idx in range(len(words)): # 단어들을 순회하면서 분수인지 확인
word = words[idx]
try:
fraction_value = Fraction(word) # 분수로 변환 가능한 경우 분수 값을 저장
fractions_list.append(fraction_value)
clean_str = re.sub(r'[^\w\s]', '', words[idx+1]) # ? 등의 특수문자들 제거(re는 정규화 패키지)
words_list.append(clean_str) # 분수뒤 단어 추출해서 저장
except ValueError:
pass
return words_list, fractions_list
# 예시 입력
input_string = "What is 4/7 wallaby, 1/4 parakeet and 3/5 perch?"
result = decompose(input_string)
print(result)
728x90
반응형