티스토리 뷰
시작에 앞서 본 내용은 학습 내용을 기록하기 위함이며 내용에 틀린 점이 있을 수 있으니 이점 유의 부탁드립니다.
문자열 포맷팅
Formatted String
문자열 포맷팅이란?
- 문자열안에 원하는 어떤 값 또는 계산된 값을 삽입하여 문자열로 사용하기 위한 방법
- 이를 문자열 보간법이라고도 한다.
문자열 포맷팅 방법
Python에는 3가지의 문자열 포맷팅 방법이 있으며 이는 아래와 같다
1. 고전적인 문자열 포맷팅(Classic String Format)
>>> blog_name = 'F7 project'
>>> visit_num = 20
>>> print('Blog : "%s"의 방문자 수는 %d 입니다.' %(blog_name, visit_num))
Blog : "F7 project"의 방문자 수는 20 입니다.
2. 문자열 포맷 함수(str.format() Method)
>>> blog_name = 'F7 project'
>>> visit_num = 20
>>> print('Blog : "{0}"의 방문자 수는 {1} 입니다.'.format(blog_name, visit_num))
Blog : "F7 project"의 방문자 수는 20 입니다.
3. f-string (Python 3.6 부터 사용 가능)
>>> blog_name = 'F7 project'
>>> visit_num = 20
>>> print(f'Blog : "{blog_name}"의 방문자 수는 {visit_num} 입니다.')
Blog : "F7 project"의 방문자 수는 20 입니다.
서식 지정 축약어
Format Specification Mini-Language
시작에 앞서
본 내용은 f-string을 기반으로 작성되었습니다.
용어 설명
필드(Field) : 특정 데이터를 보관(save)하는 지정된 영역을 지칭하는 단어
*데이터베이스에서는 열(Column)을 지칭 한다.
필드 너비(Field Width) : 데이터를 보관하는데 필요한 테두리의 크기를 지칭하는 단어로, 단위로서 표기된다.
본 내용에서 필드 너비는 포맷 서식이 지정된 문자열의 길이로 표기되었다.
필드너비(Field Width) 지정
- ' : ' : 서식을 지정 한다는 표기 및 필드너비 설정이 가능 하다.
# 변수 선언
>>> num = 10
# 별도의 필드너비를 입력하지 않아도 필드너비는 0이 Default이다.
>>> print(f'{num:}')
'10'
>>> print(f'{num:0}')
'10'
# 필드너비(field width) 10
>>> print(f'{num:10}')
' 10'
부호 옵션(sign options)
숫자형에 유효한 옵션
음수, 양수를 설정에 따라 부호 ' - ', ' + '로 표기 한다.
- ' - ' : 음수 부호만 표기
# 변수 선언
>>> positive_num = +10
>>> negative_num = -10
# 별도의 부호 옵션을 입력하지 않아도 - 음수 부호만 표기가 Default이다.
>>> print(f'" - " 사용 | Positive : "{positive_num :-}" | Negative : "{negative_num :-}"')
" - " 사용 | Positive : "10" | Negative : "-10"
>>> print(f'" - " 사용 | Positive : "{positive_num :}" | Negative : "{negative_num :}"')
" - " 사용 | Positive : "10" | Negative : "-10"
- ' + ' : 음수, 양수 부호 모두 표기
# 변수 선언
>>> positive_num = +10
>>> negative_num = -10
# -, + 음수, 양수 모두 부호로 표기한다.
>>> print(f'" + " 사용 | Positive : "{positive_num :+}" | Negative : "{negative_num :+}"')
" + " 사용 | Positive : "+10" | Negative : "-10"
- 스페이스 : 양수는 공백(Space)한칸을, 음수는 부호로 표기
# 변수 선언
>>> positive_num = +10
>>> negative_num = -10
# - 음수 부호는 표기되며, + 양수의 경우 빈칸(Space)로 표기된다.
>>> print(f'" 스페이스 " 사용 | Positive : "{positive_num : }" | Negative : "{negative_num : }"')
" 스페이스 " 사용 | Positive : " 10" | Negative : "-10"
정렬 옵션(alignment options)
출력 서식 옵션(정렬)
정의된 필드너비를 기준으로 정렬 하는 출력 형식 옵션
- ' > ' : 오른쪽 정렬(Default)
# 변수 선언
>>> name = 'F7project'
# 별도의 정렬 옵션을 입력하지 않아도 오른쪽 정렬이 Default이다.
>>> print(f'오른쪽 정렬 : "{name:>20}"')
오른쪽 정렬 : " F7project"
>>> print(f'오른쪽 정렬 : "{name:20}"')
오른쪽 정렬 : " F7project"
- ' < ' : 왼쪽 정렬
# 변수 선언
>>> name = 'F7project'
>>> print(f'왼쪽 정렬 : "{name:<20}"')
왼쪽 정렬 : "F7project "
- ' ^ ' : 가운데 정렬
# 변수 선언
>>> name = 'F7project'
>>> print(f'가운데 정렬 : "{name:^20}"')
가운데 정렬 : " F7project "
- ' = ' : 채움, 채움 옵션은 숫자형만 사용 가능하다.
# 변수 선언
>>> num = 10
# = 부호 앞에 입력할 문자를 입력한다.
# 단, 한자리 문자만 입력 가능하다. Ex :A=10 (O), :AB=10 (X)
>>> print(f'채움 : "{num:#=20}"')
채움 : "##################10"
# 0으로 채울 시 ' = '을 생략하고 필드너비에 입력하여 사용 가능하다.
>>> print(f'필드너비 020 : "{num:020}"')
필드너비 020 : "00000000000000000010"
# 채움 옵션은 정렬옵션에서도 사용가능하다.(이 방법은 문자열도 가능하다.)
>>> print(f'채움 가운데 정렬 : "{num:#^20}"')
채움 가운데 정렬 : "#########10#########"
문자열 표기
- ' s ' : 문자열의 기본 표기 방법이며, 생략 가능하다.
# 변수 선언
>>> name = 'F7 project'
# 별도의 문자열 표기 옵션을 입력하지 않아도 문자열 표기가 Default이다.
>>> print(f'문자열 표기 : "{name:s}"')
문자열 표기 : "F7 project"
>>> print(f'문자열 표기 : "{name:}"')
문자열 표기 : "F7 project"
숫자 표기
- ' e ' : 과학적 표기, 계수 구분문자 가 소문자로 표기된다.
# 변수 선언
>>> num = 0.1
# 과학적 표기 소문자
>>> print(f'과학적 표기 e : "{num:e}"')
과학적 표기 e : "1.000000e-01"
- ' E ' :과학적 표기, 계수 구분문자 가 대문자로 표기된다.
# 변수 선언
>>> num = 0.1
# 과학적 표기 대문자
>>> print(f'과학적 표기 E : "{num:E}"')
과학적 표기 E : "1.000000E-01"
- ' f ' : 고정 소수점 표기, nan 또는 inf를 소문자로 표기한다.
# 변수 선언
>>> num = 0.1
>>> num_inf = float('inf')
>>> num_nan = float('nan')
# 고정 소수점 표기, 소수점 6자리가 Default이다.
>>> print(f'고정 소수점 표기 f : "{num:f}"')
고정 소수점 표기 f : "0.100000"
# 고정 소수점 3자리
>>> print(f'고정 소수점 표기 3자리 f : "{num:.3f}"')
고정 소수점 표기 3자리 f : "0.100"
# 소문자 inf
>>> print(f'inf f : "{num_inf:f}"')
inf f : "inf"
# 소문자 nan
>>> print(f'nan f : "{num_nan:f}"')
nan f : "nan"
- ' F ' : 고정 소수점 표기, ' f '와 기능은 같으나, nan 또는 inf를 대문자로 표기한다.
# 변수 선언
>>> num_inf = float('inf')
>>> num_nan = float('nan')
# 대문자 inf
>>> print(f'inf F : "{num_inf:F}"')
inf F : "INF"
# 대문자 nan
>>> print(f'nan F : "{num_nan:F}"')
nan F : "NAN"
- ' g ' : 범용 표기, 주어진 정밀도 수에 대해 숫자의 자리수를 기준으로 올림 하여 표기 한다.
# 변수 선언
>>> num = 123_456_789
>>> num_float = 123.456789
>>> num_zero_float = 123.000000
>>> num_inf = float('inf')
>>> num_nan = float('nan')
# 범용 표기, 정밀도 6이 Default이다.
>>> print(f'범용 표기 g : "{num:g}"')
범용 표기 g : "1.23457e+08"
# 정밀도 2
>>> print(f'범용 표기 정밀도 .2g : "{num:.2g}"')
범용 표기 정밀도 .2g : "1.2e+08"
# 소수, 정밀도 4
>>> print(f'범용 표기 소수 정밀도 .4g : "{num_float:.4g}"')
범용 표기 소수 정밀도 .4g : "123.5"
# 정밀도에 0이 포함되어 있다면 0은 생략된다.
>>> print(f'범용 표기 소수 정밀도 .4g : "{num_zero_float:.4g}"')
범용 표기 소수 정밀도 .4g : "123"
# inf, nan은 정밀도에 영향을 받지 않는다.
# 소문자 inf
>>> print(f'inf g : "{num_inf:g}"')
inf g : "inf"
# 소문자 nan
>>> print(f'nan g : "{num_nan:g}"')
nan g : "nan"
- ' G ' : ' g '와 기능은 같으나, nan 또는 inf를 대문자로 표기한다.
# 변수 선언
>>> num_inf = float('inf')
>>> num_nan = float('nan')
# 대문자 inf
>>> print(f'inf G : "{num_inf:G}"')
inf G : "INF"
# 대문자 nan
>>> print(f'nan G : "{num_nan:G}"')
nan G : "NAN"
- ' n ' : 실행중인 환경의 설정을 기반으로 적절한 숫자 구분 문자를 삽입하여 표기 한다는 점을 제외하면 ' g '와 같다.
Python을 실행중인 환경의 설정들을 기반으로 표기된다.
- ' % ' : 백분율 표기, 숫자에 100이 곱해진 값을 고정 소수점 표기에 %기호를 붙여 표기 한다.
# 변수 선언
>>> num = 0.65
# 백분율 표기, 고정 소수점 표기에 %기호를 붙여 표기하기 때문에 소숫점 6자리가 Default이다.
>>> print(f'백분율 표기 % : "{num:%}"')
백분율 표기 % : "65.000000%"
정수 표기
- ' b ' : 2진법으로 숫자를 변환하여 표기 한다.
# 변수 선언
>>> num = 10
# 2진법
>>> print(f'2진법 b : "{num:b}"')
2진법 b : "1010"
- ' c ' : 정수를 해당 유니코드 문자로 변환하여 표기 한다.
# 변수 선언
>>> num = 44032
# 유니코드 문자
>>> print(f'유니코드 c : "{num:c}"')
유니코드 c : "가"
- ' d ' : 정수, 10진법으로 숫자를 표기 한다.(Default)
# 변수 선언
>>> num = 10
# 10진법, 별도의 옵션을 입력하지 않아도 10진법 표기가 Default이다.
>>> print(f'10진법 d : "{num:d}"')
10진법 d : "10"
>>> print(f'10진법 d : "{num:}"')
10진법 d : "10"
- ' o ' : 8진법으로 숫자를 변환하여 표기 한다.
# 변수 선언
>>> num = 10
# 8진법
>>> print(f'8진법 o : "{num:o}"')
8진법 o : "12"
- ' x ' : 16진법으로 숫자를 변환하여 표기 하며,
9보다 큰 경우 소문자를 사용하여 표기 한다.
# 변수 선언
>>> num = 10
# 16진법 소문자
>>> print(f'16진법 x : "{num:x}"')
16진법 x : "a"
- ' X ' : 16진법으로 숫자를 변환하여 표기 하며,
9보다 큰 경우 대문자를 사용하여 표기 한다.
# 변수 선언
>>> num = 10
# 16진법 대문자
>>> print(f'16진법 X : "{num:X}"')
16진법 X : "A"
변환 유형 표기
- ' # ' : 각 변환된 표기에 유형을 추가하여 표기 한다.
# 변수 선언
>>> num = 10
# 2진법 + 변환 유형
>>> print(f'2진법 + 변환 유형 #b : "{num:#b}"')
2진법 + 변환 유형 #b : "0b1010"
# 8진법 + 변환 유형
>>> print(f'8진법 + 변환 유형 #o : "{num:#o}"')
8진법 + 변환 유형 #o : "0o12"
# 16진법 + 변환 유형
>>> print(f'16진법 + 변환 유형 #X : "{num:#X}"')
16진법 + 변환 유형 #X : "0XA"
자리수 표기
- ' , ' : 1000자리를 기준으로 쉼표(' , ')가 입력된다. (Python 3.1 부터 사용 가능)
# 변수 선언
>>> num = 1000000
# Python 3.1 버전 부터 쉼표(',')로 구분하여 숫자형을 표기가 가능해졌다.
>>> print(f'{num:,}')
1,000,000
- ' _ ' : 1000자리를 기준으로 언더바(' _ ')가 입력된다. (Python 3.6 부터 사용 가능)
# 변수 선언
>>> num = 1000000
# Python 3.6 버전 부터 언더바('_')로 구분하여 숫자형을 표기가 가능해졌다.
>>> print(f'{num:_}')
1_000_000
- ' . ' : 소수점 자리수 표기
# 변수 선언
>>> num = 100.1234
# 소수점 2자리 까지 표기
>>> print(f'{num:.2f}')
100.12
# 필드너비 10으로 지정 후, 빈칸 '#'으로 채우기
# 소수점 까지 포맷 필드너비로 포함되기 때문에, '#'이 4개가 표기된걸 확인할 수 있다.
>>> print(f'{num:#=10.2f}')
####100.12
TIP
사용 예제
Tip
- 필드너비 변수로 받아 활용 하기
# 변수 선언
>>> num = 10
>>> star = '*'
# 필드너비를 변수로 할당 받아 피라미드 그리기
>>> for i in range(1, num+1, 2):
print(f'{star*i :^{num}}')
*
***
*****
*******
*********
- 필드너비 동적으로 활용 하기
# 변수 선언
>>> num = 10
>>> star = '*'
# 필드너비를 변수로 할당 받아 대각선 그리기
>>> for i in range(1, num+1, 2):
print(f'{star :>{i}}')
*
*
*
*
*
- 코딩테스트 : 프로그래머스 Kakao 2018 [1차] 비밀지도
def solution(n: int, arr1: list, arr2: list) -> list:
answer = []
for i in zip(arr1, arr2):
# 2진수 변환 및 필드너비를 n으로 설정, 0으로 채움
# 0이 먼저 오는 경우 int로 변환시 0이 지워짐에 따라 앞자리에 더미 수 2 추가
bin1 = int(f"{f'{i[0]:0{n}b}':2>{n+1}}")
bin2 = int(f"{f'{i[1]:0{n}b}':2>{n+1}}")
# [1:] 슬라이싱을 통해 더미 수 제거
sum_bin = f'{bin1+bin2}'[1:]
# replace를 사용하여 문자열 변경
sum_bin = sum_bin.replace('2', '1') # '2' -> '1'
sum_bin = sum_bin.replace('1', '#') # '1' -> '#'
# '0' -> ' ' 변환 및 answer에 append
answer.append(sum_bin.replace('0', ' '))
return answer
참고 자료
Python Documantion - Common string operations
string — Common string operations — Python 3.9.13 documentation
string — Common string operations Source code: Lib/string.py String constants The constants defined in this module are: string.ascii_letters The concatenation of the ascii_lowercase and ascii_uppercase constants described below. This value is not locale-
docs.python.org
'Python > Analysis to Python' 카테고리의 다른 글
[sum] : 모든 items를 더하는 함수 (0) | 2022.08.03 |
---|---|
[split] : 문자열을 나눠주는 함수 (0) | 2022.07.10 |
[append an element in list] : 속도 비교(performance testing ) (0) | 2022.06.07 |
[eval, exec] : 문자열을 코드로 실행하는 함수 (0) | 2022.05.30 |
[sort, sorted] : 정렬 함수 (0) | 2022.05.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- conda
- 변수 덮어쓰기
- 재귀함수 설명
- underscore
- d asd asd
- 덮어쓰기
- 콘다
- sdsad
- 백준
- recursive
- matplotlib
- 재귀함수 이해
- 연산속도
- Python
- recursive function
- 파이썬 변수
- print()
- anaconda
- sad asd
- arguments
- 이스케이프 코드
- 이중 프린트
- 재귀?
- sep=
- 파이썬
- parameters
- list comprehension
- asd ad
- _의미
- _meaning
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함