728x90
Text Processing I
과제 2번은 string을 다루는 방법을 학습하는 목적으로 내었다고 한다.
Import
정규표현식을 사용하여 좀 더 간결한 코드를 구현하기위해 re를 import 하였다.
import re
normalize
먼저 입력받은 문자를 lower()함수를 사용하여 소문자로 만들고 strip()을 사용하여 양쪽의 공백을 제거하고 split()으로 공백을 기준으로 문자를 나누었다. 그 이후에 join을 사용하여 나누어진 문자를 모두 합쳤다. 여기서 strip()은 하지않아도 똑같은 결과가 나온다.
def normalize(input_string):
return ' '.join(input_string.lower().strip().split())
no_vowels
해당 함수는 모든 모음(소문자, 대문자)를 제거시킨 문자열을 반환해야한다. 따라서 re의 sub()함수를 사용하여 모든 모음을 빈칸으로 치환시켜주는 식으로 간단하게 구현해주었다.
def no_vowels(input_string):
no_vowel_string = re.sub('[aeiouAEIOU]', '', input_string)
return no_vowel_string
Text Processing II
과제 3번도 2번에 이어서 string을 다루는 방법을 학습하는 목적으로 내었다고 한다.
Import
여기서도 정규표현식을 사용하기위해 re를 import 하였다.
import re
digits_to_words
입력받은 문자열에서 숫자만 추출하여 영어 단어로 변환하는 함수를 구현해한다. 구현은 다음과 같은 순서로 진행하였다.
- 각 숫자에 맞는 문자를 딕셔너리 타입으로 생성
- re의 sub()함수를 사용하여 숫자가 아닌 문자는 빈칸으로 치환
- 만들어진 딕셔너리의 key값과 value값을 매치시켜 리스트에 추가
- 문자로 변환된 값들이 들어가 있는 리스트를 join() 함수를 사용하여 합침
def digits_to_words(input_string):
data = {'0': 'zero','1' : 'one', '2':'two', '3':'three', '4':'four', '5':'five', '6':'six', '7':'seven', '8':'eight', '9':'nine'}
digit_string = re.sub('\D', '', input_string)
tmp = []
for s in digit_string:
if s in data:
tmp.append(data[s])
return ' '.join(tmp)
to_camel_case
간단히 설명하면 언더스코어가 없고 두 번째 단어부터 첫 번째 문자를 대문자로 바꾸로 모두 붙이는 함수이다. 일단 받은 문자열에 언더스코어가 없으면 그대로 반환해주는 예외처리를 해주고 다음과 같은 순서로 구현하였다.
- lower()함수로 소문자로 변환
- re의 findall()함수를 사용하여 단어들만 추출하여 리스트 타입으로 저장
- 리스트에 아무것도 없으면 빈 문자열 반환
- 먼저 첫 번째 단어를 출력값으로 지정
- 두 번째 단어부터 맨 앞 문자를 대문자로 바꾸고 출력값에 차례대로 더해줌
이 때 맨 앞 문자를 대문자를 바꾸는 함수로 capitalize()를 사용할 수 있다.
def to_camel_case(underscore_str):
#not exist underscore
if '_' not in underscore_str:
return underscore_str
underscore_str = underscore_str.lower()
camelcase_str = re.findall('[a-z]+', underscore_str)
#empty
if not camelcase_str:
return ''
output = camelcase_str[0]
for cur_str in camelcase_str[1:]:
output += cur_str.capitalize()
return output
728x90
'Boostcamp AI Tech' 카테고리의 다른 글
[Boostcamp Day-4] Python - Pythonic code (0) | 2021.08.05 |
---|---|
[Boostcamp Day-4] AI Math - RNN 첫걸음 (0) | 2021.08.05 |
[Boostcamp 과제 - 1] Basic Math (0) | 2021.08.05 |
[Boostcamp 1주차] 피어세션과 학습 회고 (0) | 2021.08.04 |
[Boostcamp Day-3] AI Math - CNN 첫걸음 (0) | 2021.08.04 |