[파이썬/python] 첫 글자를 대문자로 바꾸기 (title(), capitalize()))

프로그래머스 연습문제를 풀다가 문자열의 각 단어 첫 글자를 대문자로 바꾸고, 나머지는 소문자로 바꾸는 문제를 접하게 됐다.

 

나는 무식한 방법으로 문제를 해결하였는데, 해결한 후 다른 사람들의 풀이를 보니 매우 간단하게 풀 수 있는 문제였다.

이 문제를 쉽게 풀기에 매우 유용한 메소드 두 개가 있었다.

바로 title()capitalize()이다.

 

두 개 모두 문자의 첫 글자를 대문자로, 나머지는 소문자로 반환해주는 메소드지만 이 둘에는 차이점이 있다.

 

capitalize()는 전체 문장의 제일 첫 번째 문자만을 대문자로,

title()은 각 단어마다 첫 번째 문자를 대문자로 반환시켜준다는 차이점이 있다.

 

s = "HELLO, WORLD!"

s.capitalize()

-> "Hello, world!"

 

s = "HELLO, WORLD!"

s.title()

-> "Hello, World!"

 

 

그래서 이 문제를 capitalize()를 이용해 풀어야 한다면 다음과 같은 방식으로 풀어야 한다.

def solution(s):
    return ' '.join([word.capitalize() for word in s.split(" ")])​

 

 

또 나를 어렵게 했던 제한사항 중 하나가 공백이 연속해서 나올 수 있다는 것이었다.

그래서 나는 이 문제를

def solution(s):
    answer = ''
    s = s.replace(" "," - ")
    s = s.split()
    for i in s:
        answer += i[0].upper()
        answer += i[1:].lower()

    return answer.replace("-", " ")

이런 무식한..방법으로 풀었는데

s = ' '.join(((word[0].upper()) + word[1:].lower()) for word in s.split())

위의 함수를 이용하지 않고도 이렇게 간단하게 한 줄로 풀 수 있었다...

comment