We-Co

[Python] 문자열 관리 - textwrap 라이브러리를 활용해보자! 본문

Python

[Python] 문자열 관리 - textwrap 라이브러리를 활용해보자!

위기의코딩맨 2024. 2. 16. 10:53
반응형

안녕하세요. 위기의 코딩맨입니다.  

오늘은 개발을 하면서 텍스트를 관리해줘야할상황에 유용하게 쓰이는

라이브러리를 소개해드리려합니다.

 

 

예를들면 100글자의 문자열에서 10글자 이상부터는 ... 으로 표현 하고싶을때,

문자열을 20글자 마다 줄바꿈을 하는데 단어는 끊기지 않고 유지하고 싶을때 등등

이러한 상황에 유용하게 사용할 수 있습니다.

[ textwrap ]

 

바로 사용해보도록 하겠습니다.

라이브러리를 사용하기 위해 import를 진행해주세요!

문자열 [...] 표현은 shorten의 함수를 사용하시면 됩니다.

import textwrap

Econtents = 'Age is no guarantee of maturity!'
Kcontents = '안녕하세요. 저는 위기의 코딩맨입니다. 오늘은 블로그 포스팅을 작성하고 있습니다.' 
print(Econtents) 
print(textwrap.shorten(Econtents, width=25))

print(Kcontents) 
print(textwrap.shorten(Kcontents, width=25))

 

그리고 문자열을 작성하고 width를 설정해주세요. 

width는 표현하고 싶은 글자 수로 보시면 됩니다. 

width가 문자열 안에 포함되어있으면 해당 문자열까지 안보여지도록 되어있는것 같습니다. 

 

만약 해당 라이브러리를 사용하지 않으면 문자열을 [시작인덱스 : 마지막인덱스] 형식으로 가져오고 ...을 붙여서 표현하면 되겠지요!

그러나 여기서 문제가 발생합니다. []가 왜 포함되어있을까요! replace로 지워버려야할까요?!

라이브러리에서 다행하게도 지원해주고 있습니다.

Econtents = 'Age is no guarantee of maturity!'
Kcontents = '안녕하세요. 저는 위기의 코딩맨입니다. 오늘은 블로그 포스팅을 작성하고 있습니다.' 
print(Econtents) 
print(textwrap.shorten(Econtents, width=25, placeholder='...'))

print(Kcontents) 
print(textwrap.shorten(Kcontents, width=25, placeholder='---'))

 

placeholder를 활용해서 []를 지우고, ...이나 ---처럼 자신이 표현하고자 하는 방식으로 설정할수 있습니다.

 

다음은 긴 문자열을 10글자씩 자르는 함수를 소개해드리도록 하겠습니다.

바로 wrap 함수입니다.

위의 문자열을 * 5 를 사용해서 길이를 늘려줬습니다.

그리고 wrap을 사용해서 width을 설정해주고 출력해보았습니다.

Econtents = 'Age is no guarantee of maturity!' * 5
Kcontents = '안녕하세요. 저는 위기의 코딩맨입니다. 오늘은 블로그 포스팅을 작성하고 있습니다.' * 5
print(Econtents) 
print(textwrap.wrap(Econtents, width=25))

print(Kcontents) 
print(textwrap.wrap(Kcontents, width=25))

 

해당 문자열을 설정한 width 만큼 문자열을 리스트로 반환해 주는 것을 확인할 수 있습니다.

여기서 중요한 점은 문자열이 잘리지 않고 표현되고 있다는 점!

그러나 나는 리스트로 받는것보다 문자열로 표현하시고 싶으시면 2가지 방법이 있습니다.

 

 

첫번째로, 조인함수를 활용하는 것입니다.

리스트를 붙여서 표현하는데 마지막에 \n를 사용해서 한줄씩 내리도록 설정했습니다.

 

print('\n'.join(textwrap.wrap(Econtents, width=25)))
print('\n'.join(textwrap.wrap(Kcontents, width=25)))

 

두번째 방법은 이번에도 라이브러리에서 제공해주고 있습니다!

바로 fill() 함수를 활용하는 것입니다.

print(textwrap.fill(Econtents, width=25))
print(textwrap.fill(Kcontents, width=25))

 

 

간단해보이지만 해당 내용은 개발하면서 아주 많이 사용되는 부분입니다.

알아두시면 많이 도움이되실거에요!

반응형