Python/기초

파이썬 기초④ 문자열 다루기

망고고래 2024. 6. 17. 16:03

1. 문자열 관련 함수

String1 = "Hello World"
String2 = "Python is Fun!"
print(String1[0])
print(String1[0:5])
print(String1[:5])
print(String1[6:])
String3 = String1[:6] + String2[:6]
print(String3)
print(String2[:7]*5)

String[0]: 0번 인덱스의 문자 출력

String[0:5]: 0번 인덱스~4번 인덱스 출력

String[:5]: ~4번 인덱스 출력

String[6:]: 6번 인덱스~ 출력

String1[:6] + String2[:6]: ~5번 인덱스 + ~5번 인덱스

String[:7]*5: ~6번 인덱스 출력 * 5번

 

1) 자주 사용되는 string 함수

  • len(): 문자열의 길이 반환
  • str(): 다른 데이터 타입을 문자열로 반환
  • upper(), lower(): 문자열을 모두 대/소문자로 변환
  • strip(): 양쪽 끝 공백이나 특정 문자 제거
  • lstrip()/rstrip()
  • replace(old, new [, max]): 문자열 내의 특정 부분 다른 문자열로 교체
  • split(): 문자열을 특정 구분자를 기준으로 나누어 리스트로 반환
  • splitlines(num=string.count('\n')): 문자열을 줄 단위로 나누어 리스트로 반환. 줄 바꿈 문자 기준
  • join(): 리스트의 문자열 요소를 하나의 문자열로 결합
  • find(): 문자열 내에서 특정 문자열을 찾아 그 위치 반환, 없으면 -1 반환
  • startswith(), endswith(): 문자열이 특정 문자열로 시작하는지/끝나는지 여부 반환
  • isalpha(), isdigit(): 문자열이 모두 알파벳 문자/숫자로 이루어져있는지 여부 반환
  • isalnum(): 문자열이 알파벳 문자와 숫자로 이루어져있는지 확인
  • islower()/isupper(): 문자열이 모두 소문자인지/대문자인지 여부 반환
  • capitalize(): 첫글자 대문자로 반환
  • center(width, fillchar=" "): 문자열을 지정된 폭만큼 가운데 정렬, 남는 공간을 지정된 문자로 채움, 기본값 공백
  • ljust(width, fillchar=" "), rjust(width, fillchar=" "): 문자열의 왼쪽/오른쪽으로 정렬하고 남은 공간을 지정 문자로 채움
  • expandtabs(tabsize=8): 문자열 내의 탭 문자를 지정된 수의 공백 문자로 변환. 기본 tabsize 8
  • isspace(): 공백으로만 이루어져있는지 확인
  • istitle(): 제목 형식(각 단어 첫 글자가 대문자이고 나머지가 소문자)인지 확인
  • title(): 제목 형식으로 변경 후 반환
  • max(str): 사전에서 가장 뒤에 오는 문자 반환
  • zfill(width): 문자열의 길이를 지정된 너비로 맞추고 필요한 경우 문자열 왼쪽에 0을 추가해 길이를 채움. 원래 문자열의 길이가 width보다 크거나 같으면 원래 문자열 반환
MyString = "  Hello World   "
print(MyString.upper())
print(MyString.strip())
print(MyString.center(21, "*"))
print(MyString.isdigit())
print(MyString.istitle())
print(max(MyString))
print(MyString.split())
print(MyString.split()[0])

 

 

2. 문자열에서 검색하는 함수

2)자주 사용하는 함수

  • find(), rfind(): 해당 요소가 몇 번 인덱스에 있는지 왼쪽부터/오른쪽부터 찾음
  • count(str, beg= 0, end=len(string)): 'str'이 몇 번 나오는지 beg부터 end까지 셈
  • startswith(prefix, beg=0, end=len(string))/endswith(suffix, beg=0, end=len(string)): beg부터 end까지가 특정 문자열로 시작하는지/끝나는지
  • index(str, beg=0, end=len(string)), rindex(): str이 처음 등장하는 위치의 인덱스를 왼쪽부터/오른쪽부터 찾음

 

*find()와 index()의 차이

(1)예외 처리

find(): 찾지 못하면 -1 반환

index(): 찾지 못하면 ValueError 발생

 

SearchMe = "The apple is red and the berry is blue!"
print(SearchMe.find("is"))
print(SearchMe.rfind("is"))
print(SearchMe.count("is"))
print(SearchMe.startswith("The"))
print(SearchMe.endswith("The"))
print(SearchMe.replace("apple", "car").replace("berry", "truck"))

 

 

3. 포맷팅

[[fill]align][sign][#][0][width][,][.precision][type]

 

1)fill

공간에 비해 문자열의 넓이가 작을 때 넣을 문자

2)정렬

  • <: 왼쪽 정렬
  • >: 오른쪽 정렬
  • ^: 가운데 정렬
  • =: 양쪽정렬

3)부호

  • +: 양수에 + 부호, 음수에 - 부호
  • -: 음수에 - 부호
  • 스페이스: 양수 앞에 스페이스, 음수에 - 부호
  • #: 숫자의 대체 표시 형식 사용(0x 등)
  • 0: 출력이 부호 인식이 되도록 함, 필요한 경우 0으로 채움
  • width: 데이터 필드의 전체 너비 결정
  • ,: 숫자 데이터에 콤마로 천 단위 구분
  • .precision: 소수점 이하의 문자 수 결정
  • type: 입력 유형이 일치하지 않더라도 출력 유형 지정
Formatted = "{:d}"
print(Formatted.format(7000))
Formatted = "{:,d}"
print(Formatted.format(7000))
Formatted = "{:^15,d}"
print(Formatted.format(7000))
Formatted = "{:*^15,d}"
print(Formatted.format(7000))
Formatted = "{:*^15.2f}"
print(Formatted.format(7000))
Formatted = "{:*>15X}"
print(Formatted.format(7000))
Formatted = "{:*<#15x}"
print(Formatted.format(7000))
Formatted = "A {0} {1} and a {0} {2}."
print(Formatted.format("blue", "car", "truck"))