ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩도장] day14. 문자열 응용하기(2/2)
    IT/파이썬 2020. 8. 28. 01:03

    ■ 들어가기

    - 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


    ▶ Unit24. 문자열 응용하기

         - 24.1 문자열 조작하기

         - 24.2 문자열 서식 지정자와 포매팅 사용하기

     

    >> 문자열 서식 지정자와 포매팅 사용하기 <<

    - 파이썬에서 문자열 만드는 방법

    1) 서식 지정자(format specifier)로 문자열 만들기

    -> 서식 지정자로 문자열, 숫자(정수), 소수점(실수) 표현 가능

    -> 서식 지정자 포맷과 자료형은 % 로 연결

    2) 문자열 포맷팅(string formatting)으로 문자열 만들기 : format 메서드

    -> 문자열 내에서 특정 부분을 원하는 값으로 바꿀 때 서식 지정자 또는 문자열 포맷팅을 사용

    -> ex. xx의 평균 점수는 xx점입니다.

     

    1. 서식 지정자로 문자열 넣기

    - 사용법 : '%s' % '문자열'

    -> %로 시작하고 자료형을 뜻하는 문자를 작성 (s: string(문자열))

    -> '%s' 가 '문자열'로 치환됨. '%s'와 '문자열'은 %로 연결

    >>> 'I am %s.' % 'james'
    'I am james.'

    - '문자열'은 변수로 지정 가능

    >>> name = 'maria'
    >>> name
    'maria'
    >>> 'I am %s.' % name
    'I am maria.'

     

    2. 서식 지정자로 숫자 넣기

    - 사용법 : '%d' % 숫자

    -> d는 숫자를 의미하는 자료형 (10진 정수 decimal integer의 d)

    >>> 'I am %d years old.' % 20
    'I am 20 years old.'

     

    3. 서식 지정자로 소수점 표현하기

    - 사용법 : '%f' % 숫자

    -> f는 고정 소수점 fixed point의 f

    -> %f는 기본적으로 소수점 이하 6자리까지 표시함 (ex. 2.3 => 2.300000)

    >>> '%f' % 2.3
    '2.300000'

    - 소수점 이하 자릿수를 지정하고 싶다면 f 앞에 .(점)과 자릿수를 지정

    - 사용법 : '%.자릿수f' % 숫자

    >>> '%.2f' % 2.3
    '2.30'
    >>> '%.3f' % 2.3
    '2.300'

     

    4. 서식 지정자로 문자열 정렬하기

    - 사용법 : '%길이s' % 문자열

    -> % 뒤에 숫자를 붙이면 "문자열을 지정된 '길이'로 만든 뒤, 오른쪽으로 정렬하고 남는 공간을 공백으로 채움"

    >>> '%10s' % 'python'
    '    python'

    -> %10s는 1) 문자열의 길이를 10으로 만든 뒤 2) 지정된 문자열을 넣고 오른쪽 정렬

    - 문자열 외에 숫자(정수), 소수점(실수) 표현 가능

    - 소수점의 경우 .(점) 을 기준으로 자릿수 표현 가능

    - 사용법 : '%길이.자릿수f' % 실수

    >>> '%10d' % 10
    '        10'
    >>> '%10f' % 3.5
    '  3.500000'
    >>> '%10.2f' % 3.5
    '      3.50'

    - 왼쪽 정렬은 길이에 -를 붙혀줌!

    - 사용법 : '%-길이s' % 문자열, '%-길이d' % 숫자, '%-길이f' % 실수

    >>> '%-10s' % 'python'
    'python    '
    >>> '%-10d' % 1
    '1         '
    >>> '%-10f' % 3.5
    '3.500000  '

     

    5. 서식 지정자로 문자열 안에 값 여러 개 넣기

    - 서식 지정자는 공백으로 구분하고 값은 괄호 안에 ,(쉼표)로 구분하여 표기

      ( 공백으로 띄우지 않고 붙히면 실제 결과도 붙어서 나옴 )

    - 사용법 : '%d %s' % (숫자, '문자열')

    >>> 'Today is %d %s.' % (3, 'April')
    'Today is 3 April.'

     

    6. format 메서드 사용하기

    - 문자열 안에 {}(중괄호) 를 넣고, 그 안에 포맷팅을 지정하고 format 메서드로 값을 지정

    - 사용법 : '{인덱스}'.format(값)

    >>> 'Hello, {0}'.format('world!')
    'Hello, world!'
    >>> 'Hello, {0}'.format(100)
    'Hello, 100'

     

    7. format 메서드로 값을 여러 개 넣기

    - 값을 1개만 지정할 때는 인덱스를 0 만 지정하였으나

    - 값을 여러 개 넣을때는 0 ~ n 까지 순서를 지정

    - 각각의 인덱스는 공백으로 구분하며, 자료형 구분은 상관 없음

      (공백으로 구분하지 않고 붙히면, 결과도 붙어서 출력됨)

    >>> 'Hello, {0} {1} {2}'.format('Python', 3.6, 'Script')
    'Hello, Python 3.6 Script'
    >>> 'Hello, {0}{1}{2}'.format('Python', 3.6, 'Script')
    'Hello, Python3.6Script'

     

    8. format 메서드로 같은 값을 여러 개 넣기

    - 같은 인덱스가 지정된 {}를 여러 개 넣으면 같은 값이 여러 개 들어감

    >>> '{0} {0} {1} {1}'.format('Python', 'Script')
    'Python Python Script Script'

     

    9. format 메서드에서 인덱스 생략하기

    - {}에서 인덱스 생략하면 format에 지정한 순서대로 값이 들어감

    >>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6)
    'Hello, Python Script 3.6'

    - 만일 {}와 format 값의 수가 일치하지 않는 경우

      {} 가 많으면 에러

      format이 많으면 {} 수 만큼만 출력

    >>> 'Hello, {} {}'.format('Python')
    Traceback (most recent call last):
      File "<pyshell#23>", line 1, in <module>
        'Hello, {} {}'.format('Python')
    IndexError: tuple index out of range
    >>> 'Hello, {}'.format('Python', 'Script')
    'Hello, Python'

     

    10. format 메서드에서 인덱스 대신 이름 지정하기

    - {}에 인덱스 대신 이름 지정 가능

    >>> 'Hello, {language} {version}'.format(language='Python', version=3.6)
    'Hello, Python 3.6'

     

    11. 문자열 포맷팅에 변수를 그대로 사용하기

    - 변수에 값이 있고

    - {}에 변수 이름을 지정하면 문자열 생성 가능

    - 단, 문자열 앞에 포맷팅(formatting)이라는 뜻으로 f를 붙힘

    >>> language='Python'
    >>> language
    'Python'
    >>> version=3.6
    >>> version
    3.6
    >>> f'Hello, {language} {version}'
    'Hello, Python 3.6'

     

    12. format 메서드로 문자열 정렬하기

    - 서식 지정자로 오른쪽/왼쪽 정렬, ljust, rjust, center 로 문자 정렬 => 문자열 길이 지정 후, 정렬

    - 인덱스 뒤에 :(콜론)을 붙이고 정렬할 방향과 길이 지정

      => 문자열을 지정한 길이로 만든 뒤 왼쪽/오른쪽으로 정렬 후, 남는 공간은 공백으로 채움

    - 사용법 :

      왼쪽정렬 => '{인덱스:<길이}'.format(값)

      오른쪽정렬 => '{인덱스:>길이}'.format(값)

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

    => 인덱스는 여러 개 사용할 수 없나보다...?

     

    13. 숫자 개수 맞추기

    - 서식 지정자의 경우 %와 자료형 사이에 0과 개수를 지정하면 자릿수에 맞춰 0으로 채워짐

    - 문자열 포맷팅의 경우 인덱스나 이름 뒤에 :(콜론)을 붙히고 0과 개수를 지정

      ※ 이때 전체 자릿수는 0을 포함함

    - 사용법 :

      '%0개수d' % 숫자

      '{인덱스:0개수d'}.format(숫자)

    >>> '%03d' % 1
    '001'
    >>> '{0:03d}'.format(35)
    '035'

    - 실수도 숫자 개수 맞출 수 있음

    - 소수점 이하 자릿수 지정할 시 .(점) 뒤에 자릿수를 지정

      ※ 이때 전체 자릿수는 0을 포함하여 '정수 부분, 소수점, 소수점 이하 자릿수'가 모두 포함

    - 사용법 :

      '%0개수.자릿수f' % 숫자

      '{인덱스:0개수.자릿수f}'.format(숫자)

    >>> '%08.2f' % 3.6
    '00003.60'
    >>> '{0:08.2f}'.format(3.6)
    '00003.60'

     

    14. 채우기와 정렬을 조합해서 사용하기

    - {} 에 인덱스, 채우기, 정렬, 길이, 자릿수, 자료형 순으로 조합하여 사용 가능

    - 사용법 : '{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'

    >>> '{0:0<10}'.format(15) # 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
    '1500000000'
    >>> '{0:0>10}'.format(15) # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
    '0000000015'

    - 채우기 부분이 0이 아닌 다른 문자를 넣어도 가능함 (공백, 문자, .. )

      (채우기 생략 시 공백이 들어감)

    >>> '{0: >10}'.format(15)  # 남는 공간을 공백으로 채움
    '        15'
    >>> '{0:>10}'.format(15) # 채우기 부분을 생략하면 공백이 들어감
    '        15'
    >>> '{0:x>10}'.format(15) # 남는 공간을 문자 x로 채움
    'xxxxxxxx15'
    >>> '{0:1>10}'.format(15) # 남는 공간을 숫자 1로 채움 
    '1111111115'

     

    ● 요약

    1. 파이썬은 메서드만 잘 활용해도 코딩을 쉽게 할 수 있겠구나!

    댓글

Designed by Tistory.