오랜만에 돌아온 모듈 탐구 시간이다. 이번 시간에는 일반 문자열 연산을 조금 더 편리하게 도와주는 string 모듈에 대해서 알아보자
제공하는 문자열
1. string.ascii_letters : 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
2. string.ascii_lowercase : 'abcdefghijklmnopqrstuvwxyz'
3. string.ascii_uppercase : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4. string.digits : '0123456789'
5. string.hexdigits : '0123456789abcdefABCDEF'
6. string.octdigits :'01234567'
7. string.punctuation : '!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~'
8. string.printable : 출력 가능한 모든 문자열의 조합(ascii_letter + punctuation + digits)
9. string.whitespace : 공백으로 취급되는 모든 문자열(스페이스, 탭, 줄 바꿈, 캐리지 리턴, 세로 탭 및 폼 피드)
Formatter 클래스
Formatter은 문자열을 리터럴과 치환 필드(중괄호 {})로 표시를 한다. Formatter클래스는 str.format()과 유사하게 사용된다.
format 가장 기본적인 사용법은 다음과 같다.
>>> "tell me your {}".format("money")
tell me your money
중괄호 안에는 다음과 같은 문법을 써넣을 수 있으며, 의미는 옆 주석을 확인하면 된다.
"I love {}" ### 일반적인 치환문자{} "I love {0}"와 같은 의미이다.
"I love {} and {}" ### "I lovev {0} and {1}"와 같은 의미이다.
>>> 순서를 지정해줄 수 도 있고, 생략할 수도 있다.
"I have my name {name}" ### 키워드 name으로 지정값을 대입하게 할 수 있다.
"List number 1 is {my_list[0]}" ### my_list의 첫번째 원소값을 대입하게 한다
"Show me your money {0.my_money}" ### 0번째의 원소의 속성값 my_money를 출력하게 한다.
>>> 키워드를 통한 사용도 가능하며 나아가 자료구조의 속성이나 원소를 넣어줄 수 있다.
"I have much fun with {0!s}" ### 0번째 객체의 str()메소드를 호출한다.
"I have much fun with {0!r}" ### 0번째 객체의 repr()메소드를 호출한다.
"I have much fun with {0!a}" ### 0번째 객체의 ascii()메소드를 호출한다.
>>> 객체의 내장함수를 호출할 수 있다.
다양한 트릭을 다음처럼 사용할 수 있다.
### Trick 1. 텍스트 정렬
>>> "{:<30}".format("좌로밀착!")
'좌로밀착! '
>>> "{:>30}".format("우로밀착!")
' 우로밀착!'
>>> "{:&^30}".format("가운데정렬!")
'&&&&&&&&&&&&가운데정렬!&&&&&&&&&&&&'
### Trick 2. 진법
>>> my_height = 185
>>> print("키가 어떻게 되세요?")
키가 어떻게 되세요?
>>> "10진수로 : {0:d} 16진수로 : {0:x} 8진수로 : {0:o} 2진수로 {0:b}".format(my_height)
'10진수로 : 185 16진수로 : b9 8진수로 : 271 2진수로 10111001'
### Trick 3. 구분자
>>> money = 100000000
>>> rate = 0.35
>>> "{0:,} {1:.2%}".format(money, rate)
'100,000,000 35.00%'
Template 클래스
Template 클래스는 대체 문자열 하나를 인자로 생성된다. 사용법이 직관적이니 다음의 코드를 확인하자.
### Template의 사용 ###
>>> my_template=string.Template("$abc is my $hobby")
>>> my_dict = {"abc":"riducto","hobby":"python"}
>>> your_dict = {"abc":"riducto"}
>>> my_template.substitute(my_dict)
'riducto is my python'
>>> my_template.substitute(your_dict)
Traceback (most recent call last):
...
KeyError: 'hobby'
### subsutitube는 템플릿에 지정된 $문자를 키로한 딕셔너리로 치환한다. key가 없을 경우 KeyError Exception
>>> my_template.safe_substitute(your_dict)
'riducto is my $hobby'
### 그런당신을 위해 safe_substitute는 지정문자를 치환에 실패한 경우 내비둔다.
* 출처 : docs.python.org/ko/3/library/string.html
이 정도면 string 모듈에 대해서는 다 설명한 거 같다. 다음 모듈 탐구 시간에 만나도록 하자!
'Python > Python 모듈탐구' 카테고리의 다른 글
[Python] - 모듈탐구 webbrowser - 인터넷세상에 온걸 환영해 (0) | 2021.04.25 |
---|---|
[Python] - 모듈탐구 re - [^정규표현식$?] (0) | 2021.04.19 |
[Python] - 모듈탐구 sys - 우리 Python 해부하기 (0) | 2021.04.11 |
[Python] - 모듈탐구 os - Python으로 내 컴퓨터 조작하기 (0) | 2021.04.11 |
[Python] - 모듈탐구 pickle - 자료구조의 저장과 불러오기 (0) | 2021.04.11 |