Appia의 IT세상

파이썬[Python] 단어 첫 글자 대문자로 바꾸기/ 대소문자 바꾸기(upper,lower,capitalize) 본문

Python/Python 응용

파이썬[Python] 단어 첫 글자 대문자로 바꾸기/ 대소문자 바꾸기(upper,lower,capitalize)

Appia 2020. 5. 20. 07:57
반응형

이번 포스팅은 문자열에 관련된 이야기를 해볼까 합니다. 저의 많은 업무 하나는 문자열을 가지고 의미 있는 부분들을 재사용하는 프로그램을 만듭니다. 물론 자세하게 이야기 없지만, 고객에 어느 정도의 요구사항을 반영해서 위와 같은 작업을 합니다.

 

최근에 어떤 분께서 간단하게 부탁을 했습니다. 문자 중에 단어들의 글자들만 대문자로 변화하고 나머지는 소문자로 표현해주라는 것이었습니다. 그래서 기억을 살려서 문자열에서 대소문자 변환하는 방법과 제목에서 말한 바와 같이 단어 글자만 대문자로 표현하는 방법에 대해서 간단히 이야기를 해보고자 합니다.

 

일단 소문자를 변환하는 방법에 대해서 살펴보겠습니다. 기본적으로 upper()/lower() 사용해서 대소문자를 변경해서 표시를 있습니다.

 

example)

Text = "string"
 
print(Text.upper())
 
print("Text content : "+ Text)
 
Text1 = "STRING"
 
print(Text.lower())
 
print("Text1 content : "+ Text1)
cs

result)

STRING
 
Text content : string
 
string
 
Text1 content : STRING
cs

 

다음과 같이 명시가 됩니다. 하지만 텍스트 자체를 변경하지 않습니다. 따라서 문자열 전체를 변경해서 저장하고 싶으시다면 별도로 Assign해주셔야 합니다. 

혹 몇몇 분들은 첫 글자만 대문자로 변경하고 싶으신 마음에 다음과 같이 문자열을 리스트로 생각하고 접근 하시는 분들이 있습니다. 그래서 첫글자만 변경하기 위해 종종 다음과 같은 방법으로 코드를 작성하시는 분이 있습니다.

example)

Text = "string"
 
Text[0= Text[0].upper()
 
print(Text[0])
cs

result) 

Traceback (most recent call last):
 
  File "C:/Users/Bens/PycharmProjects/Blogger/String.py", line 5in <module>
  
    Text[0= Text[0].upper()
    
TypeError: 'str' object does not support item assignment
cs

다음과 같이 에러가 나옵니다. 즉, 문자열의 각 항목을 접근해서 수정할수가 없습니다. 문자열을 수정할수 없는 리스트입니다. 

그럼 이러한 부분들을 해결 하기 위해서 다른 함수가 필요합니다. 아니면, 문자 하나하나를 루프를 돌려서 첫번째만 upper()함수를 이용해서 대문자로 바꿀수 있지만, 생각보다 매우 번거롭습니다. 그래서 이러한 부분을 해결하기 위해서 많이 사용하는 함수가 capitalize입니다. 그럼 이번에는 capitalize()함수를 사용해서 확인해보도록 하겠습니다. 

 

 

example) 

Text = "string"
 
print(Text.capitalize())
cs

result) 

String
cs

위와 같이 한단어일 때는 간단합니다. 그럼 한 문장안에서 각 단어들에게 사용할 때는 어떻게 하면 될까요? 한번 살펴보겠습니다. 

 

example) 

Text = "my name is appia"
 
SplitT = Text.split(" "# 공백으로 각 부분 나누기 
 
Result = "" # 결과 값 표현을 하기 위한 변수 선언
 
for i in SplitT: # 나누어진 단어들 루프 돌기
 
    i = i.capitalize() #각 단어 앞글자 대문자로 변경
    
    if Result == "" :
    
        Result = i # 만약 첫번째라면 공백없이 그대로 i를 입력
        
    else :
    
        Result = Result+" "+# 첫번째가 아니라면 공백과 함께 i 가을 더해서 표현 
 
print(Result)
cs

result) 

My Name Is Appia
cs

 

위와 같이 문장을 각 단어로 나누어서 한번 작업을 해봤습니다. 생각보다 간단합니다. 나중에 문장을 나누고 합치는 방법에 대해서 별도로 포스팅을 진행하도록 하겠습니다.

 

논문들에 맞춤법 검사를 의뢰받아서 예전에 간단하게 툴을 만들어서 작업을 했었던 적이 생각이 납니다. 이와는 조금 다르지만, 관련해서도 향후에는 포스팅을 계획을 하고 있습니다. 

 

혹 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글남겨주시길 바랍니다. 감사합니다. 

반응형
Comments