문자열 다루기

일반적인 문자열을 다루는 문법은 기존 다른 코드와 비슷하다.

문자열 연산(연결, 반복)의 경우 +, *를 이용하며, 여러 줄 문자열의 경우 ''' 혹은 """로 감싸 만들면 된다.

그 밖의 조금 헷갈리는 문법들을 정리해 보았다.


문자열 조작하기

  • 파이썬에서는 인덱싱슬라이싱이라는 두 가지 방법으로 문자열 조작이 가능하다.

인덱싱

  • 문자열에서 특정 위치의 글자를 뽑아낸다.
  • 공백까지 포함
  • 대괄호이용
  • 양수 인덱스와 음수 인덱스가 있음
text = "Hello Python"

# 양수 인덱스 사용
print(f"첫 번째 글자: {text[0]}")       # H
print(f"두 번째 글자: {text[1]}")       # e
print(f"여섯 번째 글자: {text[5]}")     # 공백

# 음수 인덱스 사용
print(f"마지막 글자: {text[-1]}")       # n
print(f"마지막에서 두 번째: {text[-2]}") # o
print(f"마지막에서 세 번째: {text[-3]}") # h

슬라이싱

  • 긴 문자열에서 원하는 부분만 잘라낸다.
  • 문자열[시작:끝:단계] 형식 사용
    • 시작
      • 자르기를 시작할 위치 지정
      • 이 위치의 문자 포함
      • 비워두면 처음(0)부터 시작한다는 뜻
      • 음수 인덱스 사용 가능
      • 어디까지 자를지 지정
      • 이 위치의 바로 앞 문자까지만 포함(미포함)
      • 비워두면 끝까지 자른다는 뜻
      • 음수 인덱스 사용 가능
    • 단계
      • 몇 개씩 건너뛰면서 자를지 정함
      • 기본값은 1(한 칸씩 이동)
      • 음수를 넣으면 역순으로 진행
  • 시작과 끝 위치는 생략 가능하나, 콜론(:)은 꼭 사용해야 함
phone = "010-1234-5678"

# 1. 앞자리만 가져오기
print(f"통신사 번호: {phone[:3]}")      # 010

# 2. 중간 번호 가져오기
print(f"가운데 번호: {phone[4:8]}")     # 1234

# 3. 끝자리 가져오기
print(f"마지막 번호: {phone[-4:]}")     # 5678
numbers = "1234567890"

# 건너뛰면서 잘라내기
print(f"2칸씩 건너뛰기: {numbers[::2]}")    # 13579
print(f"3칸씩 건너뛰기: {numbers[::3]}")    # 1470

문자열 포맷팅

% 연산자로 포맷팅하기

% 포맷팅에서 사용하는 기호들

|기호|사용| |—|—| |%s|문자열(string)을 넣을 때 사용| |%d|정수(decimal)를 넣을 때 사용| |%f|실수(float)를 넣을 때 사용| |%.nf|소수점 n 번째 자리까지만 표시할 때 사용| |%nd|최소 n자리 숫자로 표시할 때 사용|

# 문자열 넣기
name = "철수"
print("내 이름은 %s입니다" % name)

# 점수 넣기
age = 12
print("내 나이는 %d입니다" % age)

# 실수 넣기
height = 158.7
print("내 키는 %f입니다" % height)
print("내 키는 %.1f입니다" % height)    # 소수점 한 자리까지만 표시

# 10자리 공간 마련하기
score = 95
print("성적은 %10d점입니다" % score)
  • 결과

    내 이름은 철수입니다
    내 나이는 12입니다
    내 키는 158.700000입니다
    내 키는 158.7입니다
    성적은 95점입니다

여러 개의 값 넣기

  • 괄호()로 묶어서 순서대로 입력
  • 개수도 일치해야함
name = "영희"  
age = 11  
height = 145.5  

# 두 개의 값 넣기  
print("%s는 %d살입니다" % (name, age))  

# 세 개의 값 넣기  
print("%s는 %d살이고, 키는 %.1fcm입니다" % (name, age, height))
  • 결과

    영희는 11살입니다
    영희는 11살이고, 키는 145.5cm입니다

format() 메서드로 포맷팅하기

  • 중괄호{}를 사용해서 값 입력
  • % 연산자보다 더 다양한 방법으로 값을 넣을 수 있음

format() 기본 사용법

  • {} : 순서대로 값이 들어감
  • {0}, {1} : 순서를 지정해서 값 입력
  • {name} : 이름을 지정해서 값 입력
# format() 메서드 사용하기

name = "민수"  
age = 13  

# 기본 사용법 - 순서대로 들어가요  
print("저는 {}이고 {}살입니다".format(name, age))  

# 순서 지정하기 - 원하는 순서로 넣을 수 있어요  
print("{1}살의 {0}입니다".format(name, age))  

# 이름 지정하기 - 어떤 값이 어디에 들어가는지 알기 쉬워요  
print("{n}는 {a}살입니다".format(n=name, a=age))
  • 결과

    저는 민수이고 13살입니다
    13살의 민수입니다
    민수는 13살입니다

format()의 특별한 기능들

  • :<10 : 왼쪽으로 정렬하고 10칸 확보
  • :>10 : 오른쪽으로 정렬하고 10칸 확보
  • :^10 : 가운데 정렬하고 10칸 확보
  • :, : 천 단위 구분 기호 넣기
# format()의 특별한 기능들  

number = 1234567  

# 정렬하기  
print("왼쪽  정렬: {:<10}!".format(number))  
print("오른쪽정렬: {:>10}!".format(number))  
print("가운데정렬: {:^10}!".format(number))  

# 천 단위 구분하기  
print("천 단위 구분: {:,}".format(number))
  • 결과

    왼쪽 정렬: 1234567   !
    오른쪽정렬:    1234567!
    가운데정렬:  1234567 !
    천 단위 구분: 1,234,567

f-string 활용하기

  • 파이썬 3.6 버전부터 새롭게 추가된 기능
  • 문자열 앞에 f를 붙이고, 변수를 중괄호{}로 감싸서 사용
# f-string 사용하기
name = "지민"  
age = 12  

print(f"안녕하세요! 저는 {name}입니다.")  
print(f"저는 {age}살이에요.")
  • 결과

    안녕하세요! 저는 지민입니다.
    저는 12살이에요.

바로 계산하기

  • f-string의 중괄호 안에서 계산 가능
# 바로 계산하기
score1 = 90  
score2 = 85  

print(f"평균 점수는 {(score1 + score2) / 2}점입니다.")  
print(f"두 점수의 합은 {score1 + score2}점입니다.")
  • 결과

    평균 점수는 87.5점입니다.
    두 점수의 합은 175점입니다.

숫자 표현하기

  • 소수점 자릿수를 정하거나, 천 단위 구분 기호를 넣을 수 있음
  • :.2f : 소수점 둘째자리까지 표시
  • :, : 천 단위 구분 기호를 넣어줌
# 숫자 표현하기
pi = 3.14159265  
number = 1000000  

# 소수점 자릿수 지정하기
print(f"파이는 {pi:.2f}입니다.")           # 소수점 둘째자리까지
print(f"파이는 {pi:.3f}입니다.")           # 소수점 셋째자리까지

# 천 단위 구분 기호 넣기
print(f"큰 숫자: {number:,}")
  • 결과

    파이는 3.14입니다.
    파이는 3.142입니다.
    큰 숫자: 1,000,000


문자열 메소드 활용

문법 설명
len() 문자열 길이 확인
strip() 문자열 앞뒤의 공백 제거. 왼쪽만 없애고 싶다면 lstrip(), 오른쪽에서만 없애고 싶다면 rstrip() 사용
replace() 문자열의 일부를 새로운 내용으로 변경. 원본은 손대지 않음
find() 문자열 위치 찾기. 찾는 내용이 있으면 위치인덱스를, 없으면 -1 반환
index() 문자열 위치 찾기. 찾는 내용이 있으면 위치인덱스를, 없으면 에러
count() 특정 내용이 몇 번 나오는지 카운트. 찾는 내용이 하나도 없다면 0 반환. 대소문자 구분함
upper() 모든 알파벳을 대문자로 변환
lower() 모든 알파벳을 소문자로 변환
capitalize() 문장 시작을 대문자로, 나머지는 소문자로 변환
title() 모든 단어의 첫 글자를 대문자로 변환
split() 문자열을 원하는 기준으로 분할
splitlines() 줄바꿈을 기준으로 분할

출처 데이스쿨 - 나도 할 수 있다! 파이썬: 상

Leave a comment