1. format() 함수
👩🏻💻 숫자를 문자열로 변환하는 함수로 중괄호{}를 포함한 문자열 뒤에 마침표(.)를 찍고 format() 함수를 사용
▶️ 중괄호 개수와 format() 함수 괄호 안 매개변수의 개수는 반드시 같아야 함
"{}".format(10)
"{} {}".format(10,20)
📌 위의 구문과 같이 앞쪽에 있는 문자열 {} 기호가 format() 함수 괄호 안에 있는 매개 변수로 차례로 대치되면서 숫자가 문자열로 되는 것
zipcode = '06236'
print('우편번호 : {}'.format(zipcode)) # format() 메서드를 이용해 출력
# 결과) 우편번호 : 06236
zipcode_str = '우편번호 : {}'.format(zipcode)
print(zipcode_str)
# 결과) 우편번호 : 06236
address = '''서울특별시 강남구
테헤란로 146''' # multi line
print('주소 : {addr}'.format(addr=address)) # format() 메서드의 변수 이용
# 결과) 주소 : 서울특별시 강남구
# 테헤란로 146
📌 {} 기호의 개수가 format() 함수의 매개변수 개수보다 많으면 IndexError 예외가 발생
2. format() 함수의 다양한 기능
1) 정수 출력의 다양한 형태
# 정수를 특정 칸에 출력하기
# 정수
num_a = "{:d}".format(52)
# 특정 칸에 출력하기
num_b = "{:5d}".format(52) # 5칸
num_c = "{:10d}".format(52) # 10칸
# 빈칸을 0으로 채우기
num_d = "{:05d}".format(52) # 양수
num_e = "{:05d}".format(-52) # 음수
print('# 기본')
print(num_a)
print('# 특정 칸에 출력하기')
print(num_b)
print(num_c)
print('# 빈칸을 0으로 채우기')
print(num_d)
print(num_e)
📌 {:d}는 int 자료형의 정수를 출력하겠다고 직접적으로 지정하는 것
➡️ 매개변수로 정수만 올 수 있다.
📌 {:5d}는 5칸을 빈칸으로 잡고 뒤에서부터 52라는 숫자를 채운다.
📌 {:05d}는 5칸을 잡고 뒤에서부터 52라는 숫자를 넣은 후 앞의 빈곳을 0으로 채운다.
➡️ 부호가 있을 때는 맨 앞자리를 부호로 채우고 나머지 빈 곳을 0으로 채움
# 기호와 함께 출력하기
num_a = "{:+d}".format(33) # 양수
num_b = "{:+d}".format(-33) # 음수
num_c = "{: d}".format(33) # 양수: 기호 부분 공백
num_d = "{: d}".format(-33)# 음수: 기호 부분 공백
print("# 기호와 함께 출력하기")
print(num_a)
print(num_b)
print(num_c)
print(num_d)
📌 {:+d} 와 같이 d앞에 +기호를 붙이면 양수와 음수 기호를 표현할 수 있다.
📌 {: d} 처럼 앞에 공백을 두어 기호 위치를 비워주면 함수에 입력한 기호가 표현된다.
# < : 지정된 공간 내에서 왼쪽 정렬
# > : 지정된 공간 내에서 오른쪽 정렬
# ^ : 지정된 공간 내에서 가운데 정렬
# 10d는 10자리의 필드 폭을 의미
print("10자리 폭 왼 쪽 정렬 '{:<10d}'".format(123))
# 10자리 폭 왼 쪽 정렬 '123 '
print("10자리 폭 오른 쪽 정렬 '{:>10d}'".format(123))
# 10자리 폭 오른 쪽 정렬 ' 123'
print("10자리 폭 가운데 정렬 '{:^10d}'".format(123))
# 10자리 폭 가운데 정렬 ' 123 '
print()
# 채움문자를 지정하면 공백 대신 채움문자가 빈자리를 채움
print("10자리 폭 왼 쪽 정렬 채움문자 '{:*<10d}'".format(123))
# 10자리 폭 왼 쪽 정렬 채움문자 '123*******'
print("10자리 폭 오른 쪽 정렬 채움문자 '{:*>10d}'".format(123))
# 10자리 폭 오른 쪽 정렬 채움문자 '*******123'
print("10자리 폭 가운데 쪽 정렬 채움문자 '{:*^10d}'".format(123))
# 10자리 폭 가운데 쪽 정렬 채움문자 '***123****'
# 조합하기
num_a = "{:+5d}".format(33) # 기호를 뒤로 밀기: 양수
num_b = "{:+5d}".format(-33) # 기호를 뒤로 밀기: 음수
num_c = "{:=+5d}".format(33) # 기호를 앞으로 밀기: 양수
num_d = "{:=+5d}".format(-33) # 기호를 앞으로 밀기: 음수
num_e = "{:+05d}".format(33) # 0으로 채우기: 양수
num_f = "{:+05d}".format(-33) # 0으로 채우기: 음수
print("# 조합하기")
print(num_a)
print(num_b)
print(num_c)
print(num_d)
print(num_e)
print(num_f)
📌 기호와 공백을 조합할 때 '=' 기호를 앞에 붙일 수 있다.
➡️ 5칸의 공간을 잡았을 때 기호를 빈칸 앞에 붙일 것인지, 숫자 앞에 붙일 것인지 지정
# 부동 소수점 출력의 다양한 형태
num_a = "{:f}".format(12.345)
num_b = "{:15f}".format(12.345) # 15칸 만들기
num_c = "{:+15f}".format(12.345) # 15칸에 부호 추가하기
num_d = "{:+015f}".format(12.345) # 15칸에 부호 추가하고 0으로 채우기
print(num_a)
print(num_b)
print(num_c)
print(num_d)
# 소수점 아래 자릿수 지정하기
num_a = "{:15.3f}".format(12.345)
num_b = "{:15.2f}".format(12.345)
num_c = "{:15.1f}".format(12.345)
print(num_a)
print(num_b)
print(num_c)
📌 15칸을 잡고 소수점을 각각 3자리, 2자리, 1자리로 출력
➡️ 자동으로 반올림도 일어남
# 의미없는 소수점 제거
num_a = 33.0
num_b = "{:g}".format(num_a)
print(num_a)
print(num_b)
3. f-문자열
👩🏻💻 formatted strings ; 파이썬 3.6이후 버전에서 사용 가능
👩🏻💻 문자열 앞에 'f'를 붙여서 만드는데, 문자열 내부에 표현식을 {} 괄호로 감싸서 삽입할 수 있다.
f'문자열{표현식}문자열'
who = 'you'
how = 'happy'
print(f'{who} make me {how}') # you make me happy / 문자열에 f 또는 F라는 접두어 prefix를 붙임
age = 25
print(f'내년엔 {age + 1}살이 됩니다.') # 내년엔 26살이 됩니다.
📌 format() 함수보다 간단하고 직관적이라 대부분 f-문자열을 사용하는 편
💡 format() 함수를 사용하는 것이 더 좋은 경우
a) 문자열 내용이 너무 많을 때
- f-문자열을 사용하면 어떤 데이터를 삽입하여 출력하는지 확인하기 위해 문자열을 모두 읽어야 하는 문제가 있다.
b) 데이터를 리스트에 담아서 사용할 때
- 리스트를 f-문자열로 형식화해서 출력하려면 [] 기호로 일일이 리스트 요소에 접근해야 하지만,
format() 함수와 전개 연산자를 사용하면 더 간단하게 입력하여 리스트 요소를 한꺼번에 출력 가능
data = ['별', 2, 'M', '서울특별시 강서구', 'Y']
f"""이름: {data[0]}
나이: {data[1]}
성별: {data[2]}
지역: {data[3]}
중성화 여부: {data[4]}"""
"""이름: {}
나이: {}
성별: {}
지역: {}
중성화 여부: {}""".format(*data)
'''
실행결과)
이름: 별
나이: 2
성별: M
지역: 서울특별시 강서구
중성화 여부: Y
'''
4. 문자열의 구성 파악하기: isOO()
👩🏻💻 문자열이 소문자로만 구성되어 있는지, 알파벳으로만 구성되어 있는지, 숫자로만 구성되어 있는지 등을 확인할 때 사용
isalnum() | 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인 |
isalpha() | 문자열이 알파벳으로만 구성되어 있는지 확인 |
isidentifier() | 문자열이 식별자로 사용할 수 있는지 확인 |
isdecimal() | 문자열이 정수 형태인지 확인 |
isdigit() | 문자열이 숫자로 인식될 수 있는 것인지 확인 |
isspace() | 문자열이 공백으로만 구성되어 있는지 확인 |
islower() | 문자열이 소문자로만 구성되어 있는지 확인 |
isupper() | 문자열이 대문자로만 구성되어 있는지 확인 |
print("Python1".isalnum())
# 실행결과) True
print("33".isdigit())
# 실행결과) True
5. 문자열과 'in 연산자'
👩🏻💻 문자열 내부에 어떤 문자열이 있는지 확인할 때 'in 연산자' 사용
👩🏻💻 리턴 값은 boolean 형 (True / False)
print("영희" in "내 이름은 영희입니다.") # True
print("안녕" in "내 이름은 영희입니다.") # False
[ 내용 참고 : 책 '혼자 공부하는 파이썬' 및 IT 학원 강의 자료 ]
'Programming Language > Python' 카테고리의 다른 글
[Python] method | 리스트 메소드 [요소 추가 및 제거] (0) | 2024.02.28 |
---|---|
[Python] method | 문자열 메소드 (4) | 2024.02.28 |
[Python] 숫자의 종류, 연산자, 변수, input(), 형변환 (1) | 2024.02.26 |
[Python] 자료형, 문자열, 문자열 연산자, 문자열 길이 함수 (0) | 2024.02.26 |
[Python] 파이썬 용어 (0) | 2024.02.26 |