본문 바로가기
프로그래밍/파이썬

파이썬 day5: format함수, find함수, 대소문자, 출력 폭 등

by onmywaytoheaven 2025. 3. 20.
728x90
반응형

안녕하세요. 오늘은 코드프렌즈를 통한 파이썬 공부 컨텐츠입니다. day5이고요. format함수, find함수, 대소문자, 출력 폭 등 다양한 파이썬 개념들에 대해 알아보겠습니다.

 


핵심 개념 정리

 

※ format() 함수로 문자열에 변수 삽입하기

  • format() 함수는 문자열에 변수나 값을 삽입할 때 사용한다
  • format 함수는 중괄호 { }를 사용해 문자열 내에서 값을 대체할 위치를 지정하고, 이후 함수에 전달된 인자들이 순서대로 해당 위치에 삽입된다.
  • format() 함수는 동적인 문자열, 즉 변수 등에 의해 문자열이 변경될 수 있는 상황에 유용하게 사용된다.
greeting = "안녕하세요, {0}님! 오늘은 {1}일 입니다."

formatted_greeting = greeting.format("코드프렌즈", "화요일")

print(formatted_greeting)  # "안녕하세요, 코드프렌즈님! 오늘은 화요일 입니다."

 

 

 



※ format() 함수 유의사항 - indexError

  • format() 함수를 사용할 때, 문자열 내의 중괄호 {}의 개수와 format() 함수에 전달된 매개변수의 수가 일치하지 않으면 indexError 예외가 발생한다.
  • indexError는 format() 함수에 전달된 매개변수보다 많은 중괄호가 문자열 내에 있어, 중괄호에 매핑할 값을 찾지 못할 때 발생한다.
indexerror 예시

greeting = "안녕하세요, {0}님! 오늘은 {1} 입니다. {2}"

try:
    formatted_greeting = greeting.format("코드프렌즈", "화요일")
    print(formatted_greeting)

except IndexError as e:
    print(f"오류 발생: {e}")
반응형

 

 

IndexError 해결

  • indexError를 방지하기 위해 문자열 내의 중괄호 개수와 format() 함수에 전달되는 매개변수의 수를 일치시켜야 한다.
# {2}를 제거하여 indexError 해결
greeting = "안녕하세요, {0}님! 오늘은 {1} 입니다."
formatted_greeting = greeting.format("코드프렌즈", "화요일")

print(formatted_greeting)  # "안녕하세요, 김철수님! 오늘은 화요일 입니다."

 

 

 




※ format() 함수로 정수 출력하기

  • format() 함수를 사용하면 문자열을 다양한 형식으로 출력할 수 있다.
  • 출력할 데이터의 형식을 지정하는 것을 포매팅(formatting, 형식화)이라고 하며, 중괄호 { } 안에 :를 사용하여 출력 형식을 지정한다.

 

 

※ format() 함수 사용 예시


"{:포맷옵션}".format(값)



{ } : 자리 표시자로 값을 삽입하는 위치를 지정

: : 포맷의 옵션 지정





※ 정수 출력하기

  • 정수를 출력할 때는 {:d}와 같이 중괄호의 : 오른쪽에 d를 사용한다.
  • 만약 d를 생략하면, 파이썬은 값의 타입에 따라 자동으로 적절한 포맷을 사용한다.
정수 출력 formatting 예시
number = 123

# 정수 출력
formatted = "number: {:d}".format(number)
print(formatted)  # "number: 123"

 

자동 타입 지정 formatting 예시
number = 123

# 정수 출력
formatted = "number: {}".format(number)
print(formatted)  # "number: 123"

 

 

 



※ 출력 폭 지정하기

  • 오른쪽에 숫자를 사용하면 출력되는 문자열의 폭을 지정한다.
  • 예를 들어 {:5}는 출력되는 문자열의 폭을 5로 지정한다.
정수 출력 formatting 예시
number = 123
formatted = "number: {:5}".format(number) # 폭 5로 고정

# 123 앞에 공백 2개가 삽입됨
print(formatted)  # "number:   123",

 

 

만약 폭을 채울 때 숫자 0을 사용하고 싶다면, 폭 앞에 0을 붙입니다.

 

정수 출력 formatting 예시
number = 123
formatted = "number: {:05}".format(number) # 폭 5로 고정

# 123 앞에 0이 2개가 삽입됨
print(formatted)  # "number: 00123"

 

 

 

 

 



※ format() 함수로 부동 소수점 숫자 다루기

  • 소수점을 포함한 실수형 데이터를 출력할 때는 {:f}를 사용한다.
  • 중괄호 안의 f는 실수형 데이터를 출력할 때 사용하는 포맷 문자로 float(부동소수점)의 약자이다.
  • 프로그래밍에서 부동소수점은 소수점의 위치가 고정되어 있지 않은 실수를 의미한다.
  • : 오른쪽.숫자를 사용하면 소수점 이하 자릿수를 지정할 수 있다.
  • 예를 들어 {:.2f}는 주어진 실수의 소수점 이하 두 자리까지만 출력한다.
실수형 출력 formatting 예시

float_number = 123.4567
formatted_float = "float_number: {:.2f}".format(float_number)

print(formatted_float)  # "float_number: 123.46"

 

 

 

 

 


※ 소수점 이하 자릿수 제거하기

  • 부동 소수점 숫자의 소수점 이하 자릿수를 제거하려면 :.0f를 사용한다.
number = 123.0

formatted_number = "{:.0f}".format(number) # 소수점 이하를 표시하지 않음

print(formatted_number)  # "123"

 

 

 

 


※ 대소문자 변환 메소드 upper()와 lower()

  • 문자열 "apple"을 "APPLE"로, "APPLE"을 "apple"로 한 번에 변환하려면 어떻게 해야 할까?
  • 파이썬은 문자열의 대소문자를 변환하는 함수인 upper()와 lower()를 제공한다.
  • upper() 메소드는 문자열의 모든 문자를 대문자로 변환하고, lower() 메소드는 모든 문자를 소문자로 변환한다.

 

 

대소문자 변환은 언제 필요할까?

프로그래밍에서 대소문자 변환은 정규화를 통해 사용자가 입력한 데이터를 표준 형식으로 변환할 때 주로 사용된다.

정규화란? 

정규화는 데이터를 일관된 형태로 변환하는 과정을 뜻함

예를 들어 텍스트를 비교할 때 모든 문자를 소문자로 바꾸거나, 공백을 제거하는 등의 작업을 수행하는 것이 정규화입니다.

 

 

 

 

 

 



※ strip() 함수로 문자열 양옆의 공백 제거하기

  • strip() 함수는 문자열의 양쪽 끝에 있는 공백(스페이스, 탭 등)을 제거한다.
  • 주로 사용자로부터 입력받은 문자열에 불필요한 공백이 포함되어 있는 것을 방지하기 위해, strip() 함수를 사용하여 공백을 제거하고 입력값을 정규화한다.
text = "   안녕하세요, 반갑습니다!   "
stripped_text = text.strip()
print(stripped_text)  # "안녕하세요, 반갑습니다!"

 

 

 


※ 특정 문자 제거하기

  • strip() 함수에 인자를 전달하면 문자열의 양쪽 끝에서 해당 문자를 제거할 수 있다.
text = "xxx안녕하세요, 반갑습니다!xxx"

stripped_text = text.strip('x')

# "안녕하세요, 반갑습니다!"
print(stripped_text)

 

 

 

 





※ 문자열 구성을 확인하는 isOOO() 함수들

  • isalnum(), isalpha(), isdigit()와 같이 isOOO() 형태의 이름을 가지는 함수들은 문자열이 어떻게 구성되어 있는지 확인할 때 사용한다.
  • 이 함수들은 문자열에 포함된 문자들이 특정 조건을 만족하는지 확인하고, 그 결과를 True 또는 False로 반환한다.

 

주요 함수들

isalnum(): 문자열이 알파벳 문자(A, a, B, b...)와 숫자(-1, 0, 3.1..)만 포함하고 있는지 확인

isalpha(): 문자열이 오직 알파벳 문자으로만 이루어져 있는지 확인

isdigit(): 문자열의 모든 문자가 숫자(0~9)로 이루어져 있는지 확인

text = "Python3"

print(text.isalnum())  # True

print(text.isalpha())  # False

print(text.isdigit())  # False

 



이 함수들은 언제 사용할까요?

  • isOOO() 함수들은 주로 사용자 입력의 유효성을 검사하거나, 데이터를 정제할 때 사용된다.
text = input("닉네임을 숫자 또는 문자로 입력해 주세요: ")

if text.isalnum():
    print("유효한 입력: 문자열에 문자 및/또는 숫자만 포함됩니다.")
else:
    print("잘못된 입력: 문자열에 특수 문자 또는 공백이 포함되어 있습니다.")

 

 

 

 

 

 



※ find()와 rfind()로 특정 문자의 위치 찾기

  • "banana"라는 문자열에서 "a"라는 문자가 몇 번째에 있는지 찾으려면 어떻게 할까?
  • find()와 rfind() 함수는 문자열 내에서 특정 문자나 문자열의 위치를 찾는다.
728x90


※ find() 함수 사용법

  • find() 함수는 문자열의 시작(왼쪽)부터 특정 문자 및 문자열을 찾아 그 위치의 인덱스(Index) 번호를 반환한다.

인덱스란? : 프로그래밍에서 인덱스는 순서를 나타내는 번호를 뜻합니다. 여러 문자로 구성된 문자열에서 각 문자는 인덱스를 가지고 있으며, 인덱스는 0부터 시작합니다. 예를 들어, 문자열 "hello"에서 "h"의 인덱스는 0, "e"의 인덱스는 1입니다.

  • 문자열 내 공백도 인덱스에 포함되며, 문자열 내 찾는 문자열이 여러 번 나타날 경우 처음 나타나는 위치의 인덱스를 반환한다.
  • 찾는 문자나 문자열이 없으면 -1을 반환한다.
text = "파이썬 수업, 수업은 재미있다"

# text 문자열 변수의 시작부터 "수업" 문자열의 시작 위치 반환
position = text.find("수업")

# 왼쪽에서 첫 번째 "수업" 문자열의 시작 위치 반환
print(position)

 

위 코드에서 find() 함수는 문자열 text에서 "수업" 문자열을 왼쪽부터 찾는다.
"수업" 문자열은 4번째 인덱스부터 시작하므로, find() 함수는 "수업" 문자열의 시작 위치인 4를 반환함


 

 


※ rfind() 함수 사용법

  • rfind() 함수는 문자열의 오른쪽(끝)부터 특정 문자 및 문자열을 찾아 그 위치의 인덱스를 반환한다.
  • 찾는 문자나 문자열이 없으면 -1을 반환한다.
text = "파이썬 수업, 수업은 재미있다"

# text 문자열 변수의 시작부터 "수업" 문자열의 시작 위치 반환
position = text.rfind("수업")

# 오른쪽에서 첫 번째 "수업" 문자열의 시작 위치 반환
print(position)

 

rfind() 함수는 문자열 text에서 "수업" 문자열을 오른쪽부터 찾는다.

"수업" 문자열은 8번째 인덱스부터 시작하므로, rfind() 함수는 오른쪽부터 탐색했을 때 "수업" 문자열의 시작 위치인 8을 반환한다.


수고하셨습니다.

 

파이썬 day2: type함수, 숫자와 문자열, 따옴표, 이스케이프 등

안녕하세요. 오늘은 코드프렌즈를 통한 파이썬 공부 콘텐츠입니다. day2이고요. type함수, 숫자와 문자열, 따옴표, 이스케이프 등 다양한 파이썬 개념에 대해 공부해 보겠습니다. 배운 내용 핵심

cybercity.tistory.com

 

파이썬 day4: 정수형, 실수형, 복합대입연산자, 연산자 우선순위 등

안녕하세요. 오늘은 코드프렌즈를 통한 파이썬 공부 컨텐츠입니다. day4이고요. 정수형, 실수형, 복합대입연산자, 연산자 우선순위 등 다양한 파이썬 개념에 대해 알아보겠습니다. 핵심 개념 정

cybercity.tistory.com

 

사이버펑크 배경화면 모음 (Cyberpunk Wallpapers for PC & ipad)

안녕하세요. 오늘은 사이버펑크 배경화면 모음을 가져왔습니다. 개인소장용으로 사용해 주세요! 2차 가공, 도용, 무단배포는 모두 금지입니다.  Here are high-quality cyberpunk wallpapers for PC & Ipad. Unath

cybercity.tistory.com

 

728x90
반응형