string

  • python에서 문자열은 변경이 불가능한 객체(immutable)
  1. Basic

    • python의 문자열은 ‘ ‘ 와 “ “ 모두 사용하며, 같이 사용할 수도 있다.

      1
      2
      3
      4
      5
      6
      7
      a = 'abcde'
      print(a)
      >> abcde

      a = "abcde"
      print(a)
      >> abcde
    • 문자열 안에 ‘와 ‘’를 같이 쓰고 싶은 경우, ‘\‘와 같이 쓰면 문자 취급을 할 수 있다.

      1
      2
      3
      4
      5
      6
      7
      b = "I said, 'I can do it!'"
      print(b)
      >> I said, 'I can do it!'

      b = "I said, \'I can do it!\'"
      print(b)
      >> I said, 'I can do it!'
    • “”” “”” 사이에 있는 모든 코드를 다 문자 취급할 수 있다(multi line).

      1
      2
      3
      4
      5
      6
      7
      8
      9
      a = """
      hello world!
      hello world!!
      hello world!!!
      """
      print(a)
      >> hello world!
      hello world!!
      hello world!!!
    • 문자열 연산도 가능하다.

      1
      2
      3
      4
      5
      6
      7
      a = 'abcd'
      b = 'efgh'
      print(a+b)
      >> abcdefgh

      print('*'*30)
      >> ******************************
    • 문자열 인덱싱 및 길이 출력이 가능하다.

    • 인덱싱 범위가 벗어난 경우, 에러가 발생한다.
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      c = "abcde"
      c[0]
      >> 'a'
      c[1]
      >> 'b'
      c[10]
      >> IndexError: string index out of range

      a = "abcd"
      len(a)
      >> 4
  2. Slicing(슬라이싱)

    • [start(포함) : end(미포함)]
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      a = "abcdefghijklmnopqrstuvwxyz"
      a[1:10]
      >> 'bcdefghij'
      a[:10]
      >> 'abcdefghij'
      a[6:]
      >> 'ghijklmnopqrstuvwxyz'

      a = "I love python"
      a = a[:2] + "like" + a[6:]
      a
      >> I like python
  3. Format(포맷)

    • 형식

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      'I like the number %d and color %s' % (2, 'black') 
      >> 'I like the number 2 and color black'

      name1 = 'greg'
      name2 = 'john'
      'hi {1} my name is {0}'.format(name1, name2)
      >> 'hi john my name is greg'

      'hi {} my name is {}'.format(name1, name2)
      >> 'hi greg my name is john'

      # python3.6 이상에서만 지원되는 형식
      a = 10
      b = "abcde"
      f'value of a {a} and b is {b}'
      >> 'value of a 10 and b is abcde'
    • ‘{인덱스:<길이}’.format(값) : 부등호 방향으로 정렬 후, 공백으로 채우기

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      '{0:>10}'.format(7)
      >> ' 7'

      '{0:>1}'.format(7)
      >> '7'

      '{0:<10}'.format(7)
      >> '7 '

      '{:<20}'.format(7)
      >> '7 '

      f'{"koo":<20}'
      >> 'koo '
    • {인덱스:0의 개수.자릿수f}’.format(숫자): 자릿수 지정 가능

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      import math
      math.e
      >> 2.718281828459045

      '{:.2f}'.format(math.e)
      >> '2.72'

      '{:.5f}'.format(math.e)
      >> '2.71828'

      e = math.e
      f'{e:0.2f}'
      >> '2.72'
  4. 관련 함수들

    1
    2
    # 가지고 있는 함수 보기
    dir(str)
    • isdigit() : 문자열이 숫자인지 아닌지를 True 또는 False로 반환

      1
      2
      3
      a = '5'
      a.isdigit()
      >> True
    • isalpha() : 문자열이 문자인지 아닌지를 True 또는 False로 반환

      1
      2
      3
      a = '5'
      a.isalpha()
      >> False
    • count() : 해당 문자 개수 반환

      1
      2
      3
      b = 'abcbbcbbbbabbbcaaabbbbb'
      b.count('b')
      >> 15
    • strip() : 문자열 기준으로 양쪽 공백 지우기

    • lstrip() : 문자열 기준으로 왼쪽에 있는 공백 지우기
    • rstrip() : 문자열 기준으로 오른쪽에 있는 공백 지우기

      1
      2
      3
      4
      5
      6
      7
      c = '       abc'
      c.lstrip()
      >> 'abc'

      c = 'abc '
      c.rstrip()
      >> 'abc'
    • replace() : 문자열 바꾸기

      1
      2
      3
      d = 'I like python'
      d.replace('python','C')
      >> 'I like C'
    • split() : 문자열 나누기

    • 괄호 안에 아무런 값도 넣지 않으면 공백(스페이스, 탭, 엔터 등) 기준으로 나눔

      1
      2
      3
      e = "koo_2019"
      e.split('_')
      >> ['koo', '2019']
    • join() : 문자열 삽입

    • 괄호 안에 아무런 값을 넣지 않아도 가능
      1
      2
      3
      4
      5
      6
      li = ['a', 'b', 'c', 'd', 'e']
      ''.join(li)
      >> 'abcde'

      ':'.join(li)
      >> 'a:b:c:d:e'
Share