문자열 연산 / 문자열 메소드 + 퀴즈 / 문자열 포매팅


문자열 자료형의 연산


문자열 연결/반복/선택/범위 선택 연산자

  • 연결연산자 ( + ) / 반복연산자 ( * )

  • 선택연산자 (인덱싱)

    • 문자열 : 시퀀스 자료형 > 인덱스 존재 > 인덱스로 값의 접근 가능
  • 범위 선택 연산자 (슬라이싱)


  • 연산자의 활용

    • 역순 정렬

        a = '안녕하세요'
        print(a[::-1])
      
        ### 출력
        ### 요세하녕안
      
    • 슬라이싱, 연결

        a = '12345'
        b = '34567'
        c = a[0:3] + b[1:]
        print(c)
      
        ### 출력
        ### 1234567
      
    • 스텝 활용

        a = '1,2,3,4,5,6,7,8,9'
        print(a[::2])
        # -> 쉼표 건너뛰고 출력
      
        ### 출력
        ### 123456789
      



문자열 메소드


  • 파이썬의 문자열 자료형은 변경 불가능 > 직접 문자열 수정하는 방식이 아닌 변경된 문자를 반환하는 방식으로 메소드 사용

    • upper() : 문자열을 대문자로 변경

    • lower() : 문자열을 소문자로 변경

    • swapcase() : 대문자는 소문자로, 소문자는 대문자로 변경

    • capitalize() : 전체 문자 중 첫 문자만 대문자로 변경

    • title() : 각 단어의 첫 문자를 대문자로 변경

    • len() : 문자열의 길이 반환

    • startwith() : () 안 문자열로 시작하는지 판단

    • endwith() : () 안 문자열로 끝나는지 판단

    • count() : () 안 문자열이 몇번 등장하는지 반환

    • replace(old, new, [count]) : 문자열 변경

      • old : 현재 문자열에서 변경하고 싶은 문자

      • new : 새로 바꿀 문자

      • count : 변경할 횟수, 입력하지 않으면 old 문자열 전체를 변경, 기본값 = 1 (전체를 의미)

    • strip() : 문자열 양쪽 끝을 잘라냄(기본은 공백 있음)

        a = '    abc    '
        print(a)
        print(a.strip())
      
        ### 출력
        ###     abc    
        ### abc
      
    • lstrip() : 문자열 왼쪽 끝을 잘라냄

    • rstrip() : 문자열 오른쪽 끝을 잘라냄

    • split() : 문자열을 구분자로 분리해 리스트로 반환

        a = 'abcde'
        print(a.split('c'))
      
        ### 출력
        ### ['ab', 'de']
      
    • splitlines() : 문자열을 라인 단위로 분리해 리스트로 반환

        a = """abc
        def"""
        print(a.splitlines())
      
        ### 출력
        ### ['abc', 'def']
      
    • index() : 해당 문자열의 인덱스 반환 (없으면 에러)

    • find() : 해당 문자열의 인덱스 반환 (없으면 -1 반환)



Quiz) 특정 문자 뽑아내 출력하기


s = “Today is December 31, 2021”
31만 뽑아내 출력하기

  • split 함수 사용 > 쉼표를 기준으로 분리한 후 첫 번째 값만 출력

      s = "Today is December 31, 2021"
      print(s.split(','))
      temp = s.split(',')[0]
      print(temp)
      print(temp.split(' '))
      result = temp.split(' ')[3]
      print(result)
    
      ### 출력
      ### ['Today is December 31', ' 2021']
      ### Today is December 31
      ### ['Today', 'is', 'December', '31']
      ### 31
    
  • find / index 함수 활용 가능

      s = "Today is December 31, 2021"
      print(s[18:20])
    
      ### 출력 > 31
    



문자열 포매팅


  • 변수를 활용하여 문자열을 생성할 때 사용

  • 기본 양식이 정해져있고, 특정 값만 변경할 때 사용

  • 단체 문자나 이메일과 같이 중복된 내용들을 쉽게 변경하여 사용 가능

  • 중괄호 안에 format()의 내용 삽입

      a = '{}, World!'.format('Hello')
      print(a)
      print("{} + {} = {}".format(1, 2, 3))
    
      ### 출력
      ### Hello, World!
      ### 1 + 2 = 3
    
  • 여러개를 사용하려면 순서대로 값 입력

      a = '{}{}{}'.format('Hello', ', ', 'World!')
      print(a)
    
      ### 출력 > Hello, World!
    
  • 중괄호에는 문자열이 아닌 다른 자료형이 올 수 있음

      a = '{}, {}, {}'.format(1, (1, 2), [1, 2])
      print(a)
    
      ### 출력
      ### 1, (1, 2), [1, 2]
    
  • 중괄호에 순서를 적어 포매팅 출력 순서 변경 가능

      a = "{0}{2}{1}".format("Hello", "~", "World")
    
      ### 출력
      ### HelloWorld~
    
  • 중괄호에 식별자를 적어 출력 가능

      a = "Today is {today}, tomorrow is {tomorrow}".format(today="Friday", tomorrow="Saturday")
      print(a)
    
      ### 출력
      ### Today is Friday, tomorrow is Saturday
    
  • 서식지정자 사용

    • %d : 정수 / %f : 실수 / %s : 문자열

    • %f 기본 소수점 이하 6자리, $.1f와 같이 소수점 이하 자리 지정 가능

        print("현재 시간은 %d시 입니다." % 1)
      
        ### 출력결과
        ### 현재 시간은 1시ㅣ 입니다.
      
  • 자리 표기 가능

    • f > 실수 타입으로 변경

    • :0.숫자 > 소수점 자리 수 변경

    • :숫자 > 공백 출력

        b = '{:0.2}'.format(1/3)
        c = '{:f}'.format(3)
        d = '{:2}, {:3}'.format(5, 5)
        print(b)
        print(c)
        print(d)
      
        ### 출력결과
        ### 0.33
        ### 3.000000
        ###  5,   5
      

Categories:

python