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 학원 강의 자료 ]

+ Recent posts