일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Props
- socket io
- Class
- flask
- react
- TypeScript
- SSA
- Vue
- 중급파이썬
- AWS
- EC2
- node
- pandas
- SAA
- lambda
- S3
- dict
- wetube
- crud
- async
- docker
- git
- 파이썬
- RDS
- 채팅
- NeXT
- merge
- MongoDB
- 카톡
- 튜플
- Today
- Total
초보 개발자
21강 표현식 기반 문자열 조합 본문
[문자열 조합이란?]
다음과 같이 편집하듯 하나의 문자열을 구성해 내는 것을 가리켜 '문자열_조합'이라 한다.
s = 'i am' + str(7) + 'years old'
s
'i am 7 years old'
파이썬은 보다 괜찮은 문자열 조합 방법을 제공하고있다.
- String formatting expression '표현식'을 기반으로 문자열 조합하기 '__%s_%s__' % (value, value)
- String formatting method calls '메소드 호출'을 통해 문자열 조합하기 '__{ }_{ }__'.format(value, value)
s = 'My name is %s' % 'Yoon' # %의 위치에 문자열 'Yoon'이 삽입됨
s
'My name is Yoon'
좀 전 처럼 'my name is' + str 이런식으로 한다면 +를 붙여줘야되는 번거로움과 공백이 하나 생긴다는점과 또 많아지면 읽기 불편까지하다.
하지만 위와같은 formatting 방법을 활용하면 간단하게 처리 가능하다.
- %s 이 위치에다가 문자열을 넣어라.
- %d 이 위치에다가 정수를 넣어라 (10진수)
- %f 이 위치에다가 실수를 넣어라
s = 'My friend %s is %d years old and %fcm tall.' % ('Jung',22,178.5)
s
'My friend Jung is 22 years old and 178.500000cm tall.'
위 처럼 값이 두개 이상일 때는 튜플로 묶어주자
만약 %d에 문자를 넣으면 오류가 발생한다.
반대로 %s에 숫자를 넣으면 오류가 발생하지 않는다. 이 이유는 파이썬이 형 변환이라는 것을 해주기 때문이다.
정수 22가 왔다면 문자 '22'로 바꿔준다. 단 역은 성립 X
그리고 정수와 실수에도 성립한다.
정수를 %f의 위치에 놓은 경우 정수가 실수로 자동변환
실수를 %d의 위치에 놓은 경우 실수가 정수로 자동변환 (소수점 이하 삭제, 데이터 손실 발생)
이러한 스타일의 장점은 이름을 통해서 삽입할 내용을 결정할 수도 있다. %(이름)s, %(이름)d
s = "%(name)s : %(age)d" % {'name' : 'Yoon', 'age' : 22}
s
'Yoon : 22'
아까는 순서를 바탕으로 넣었지만 지금은 이름이 바탕이 되기에 순서는 중요하지 않다. {'age',:22,'name':'Yoon'} 이렇게 와도 상관 없다.
[보다 세밀한 문자열 조합 지정]
%[flags][width][.precision]f
%와 f사이에 3가지 옵션을 줄 수 있다. 필요한 만큼 선택적으로 넣을 수 있음
[flags] - 또는 0 또는 +를 넣어 특변한 신호를 줌 (부호)
[width] 폭, 어느 정도 넓이를 확보하고 출력할지 결정 (숫자)
[.precision] 정밀도, 소수 이하 몇째 자리까지 출력할지 결정 (.을 꼭 붙여야함)
먼저 .precision을 살펴보자
'height : %f' % 3.14
'height : 3.140000'
'height : %.3f' % 3.14 # 소수점 이하 셋째 자리까지 출력
'height : 3.140'
'height : %.2f' % 3.14 # 소수점 이하 둘째 자리까지 출력
'height : 3.14'
width를 추가해서 살펴보자
'height : %7.2f입니다.' % 3.14
'height : 3.14'입니다. #7칸 확보하고 그 공간에 3.14를 넣음
'height : %10.2f입니다.' % 3.14
'height : 3.14'입니다. #10칸 확보하고 그 공간에 3.14를 넣음
위에서 보이듯 7칸을 확보했는데 실제 출력할 내용은 3.14 즉 4칸이면 충분한 경우, 오른쪽에 붙여서 출력하고 나머지 공간은 그냥 비워둔다. 즉 첫 번째 출력의 결과에서는 세칸의 빈칸이 존재하게 된다.
이제 flag까지 추가해보자
flag 0
'height : %07.2f입니다.' % 3.14
'height : 0003.14'입니다. #7칸 확보하고 그 공간에 3.14를 넣음
'height : %010.2f입니다.' % 3.14
'height : 0000003.14'입니다. #10칸 확보하고 그 공간에 3.14를 넣음
빈공간에 0이 들어간다.
flag -
'height : %07.2f입니다.' % 3.14
'height : 3.14 입니다.' #7칸 확보하고 그 공간에 3.14를 넣음
'height : %010.2f입니다.' % 3.14
'height : 3.14 입니다.' #10칸 확보하고 그 공간에 3.14를 넣음
-는 왼쪽으로 붙여서 출력하는것을 의미한다.
flag +
+는 우측정렬이라고 생각하기 쉬운데 아니다.
n = 3
'num: %+d' % n # flags에 +를 두면 부호가 함께 출력
n = -1
'num: %+d' % n # flags에 +를 두면 부호가 함께 출력
'num: -1' # 음수일 때는 당연히 -가 붙음
총 정리
'%(h)s : %-+10.3f입니다.' % {'h' :'height', 'v':3.14}
'height: +3.140 입니다.'
'Python > 윤성우 열혈 파이썬' 카테고리의 다른 글
23강 클래스와 객체의 본질 (0) | 2022.01.18 |
---|---|
22강 메소드 기반 문자열 조합 (0) | 2022.01.17 |
20강 enumerate와 문자열 비교 (0) | 2022.01.17 |
19강 정렬 기술 sort, sorted, key (0) | 2022.01.17 |
18강 자료형 분류와 set & frozenset (0) | 2022.01.17 |