ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL. 16 문자열 서식 지정자 및 포매팅 사용하기
    TIL 2020. 10. 24. 20:55
    728x90

    ## 문자열 안에서 특정부분을 원하는 값으로 바꿀때 서식 지정자 또는 문자열 포매팅을 사용한다

    ## 서식 지정자로 문자열 넣기

    ## %s % '문자열' 구조

    ## %s 는 문자열 이라는 뜻으로 string의 s 이다.

    ## 당연히 문자열로 바로 지정하지 않고 변수로 지정할 수도 있다.

     

    print('I am %s' % 'muntari'

    :: I am muntari

     

    name = 'sheemun'

    print('I am %s' % name)

    :: I am sheemun


    ## 서식 지정자로 숫자 넣기

    ## %d % 숫자 구조

    ## %d 는 숫자 라는 뜻으로 10진 정수 decimal integer 의 d 이다.

    ## 당연히 숫자를 바로 지정하지 않고 변수로 지정할 수도 있다.

     

    print('I am %d years old' % 29)

    :: I am 29 years old

     

    age = 29

    print('I am %d years old' % age)

    :: I am 29 years old


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

    ## %f % 숫자 구조

    ## %f 는 실수 라는 뜻으로 fixed point 의 f 이다.

    ## 기본 소수점 아래 6자리로 디폴트가 되어있으며 %.2f , %.4f 로 소수점 자리를 제한할 수 있다.

     

    print('현재 기온은 %f도 입니다' % 19.2)

    :: 현재 기온은 19.200000도 입니다

     

    print('현재 기온은 %.1f도 입니다' % 19.2)

    :: 현재 기온은 19.2도 입니다

     

    tem = 19.8

    print('현재 기온은 %.2f도 입니다.' % tem)

    :: 현재 기온은 19.80도 입니다.


    ## 서식 지정자를 사용해서 문자열 정렬하기

    ## %길이s % '문자열'

    ## %길이s  //  %-길이s 

    ## %뒤에 숫자를 붙이면 해당 숫자 만큼의 길이로 된 문자열을 만든 후 정렬하고자하는 문자열을 정렬하고 나머지는 공백 으로 채움

    ## 디폴트 값 오른쪽 정렬로 - 를 붙혀줄 경우 왼쪽 정렬되며 나머지를 공백 으로 채운다.

     

    print('%10s' % 'python')

    ::: '    python'

    ## %10s 를 '' "" 등으로 감싸줘야함

     

    print('%-10s' % 'python')

    :: 'python    '


    ## 서식 지정자를 사용해 문자열 안에 값 여러개 넣기

    ## 문자열 안에 값 여러개를 넣기 위해선 %s % '문자열' 구조에서 '문자열'에 괄호 와 함께 ,(콤마)를 사용해줘야한다.

     

    print('Today is %d %s' % (3, 'April'))

    :: Today is 3 April

     

    print('Today is %d%s' % (3'April'))

    :: Today is 3April

    ## %d 와 %s 사이에 공백을 넣어주지 않으면 그대로 출력되기 때문에 주의하자


    ## 문자열 포매팅 사용하기

    ## 문자열 안에서 특정부분을 원하는 값으로 바꿀때 서식 지정자 또는 문자열 포매팅을 사용한다!

    ## Python에서는 서식 지정자보다 더 편리한 문자열 포매팅 (string formatting)을 제공한다.

     

    ## format method

    ## {인덱스}.format(값) 구조

     

    print('hellow {0}'.format('world!'))

    :: 'hellow world!'

     

    print('hellow {0}'.format(20000))

    :: 'hellow 20000'


    ## 값 여러개 넣기

    ## 인덱스 순서 주의!

     

    print('hellow {0} {2} {1}'.format('python''script'3.8))

    :: 'hellow python 3.8 script'

     

    print('hellow {} {} {}'.format('python''script'3.8))

    :: 'hellow python script 3.8'


    ## 인덱스 값을 지정하지 않고 공백으로 기입하는 경우 지정한 값이 순서대로 들어가게 된다.

    ## 같은 값을 여러번 넣기도 가능

     

    print('{0} {0} {1} {1}'.format('배고파''배곺'))

    :: 배고파배고파배곺배곺

    :: 배고파 배고파 배곺 배곺

    ## {} 사이에 공백을 적어주지 않는 한 그대로 출력됨을 주의하자.


    ## method 사용시 인덱스가 아닌 이름을 지정할 수 있다.

     

    print('hellow {lan} {ver}'.format(lan = 'python'ver = 3.8))

    :: hellow python 3.8

     

    ## 당연히 이름이 아닌 변수를 사용할수도 있다

    ## 변수를 사용할 경우 문자열 앞에 formatting 이라는 뜻의 f를 붙혀줘야 정상 동작한다.

    ## f'문자열 {} {}'

     

    lan = 'python'

    ver = 3.8

     

    print('hellow {lan} {ver}')

    :: hellow {lan} {ver}



    print(f'hellow {lan} {ver}')

    :: hellow python 3.8

     


    ## format method 를 이용해 문자열 정렬하기

    ## '{인덱스 : < 길이}'.format(값) 구조

    ## 인덱스 뒤에 :(콜론)을 붙이고 길이를 지정해주면 길이 만큼의 문자열이 생성되고 나머지는 공백 으로 채움

    ## 부등호 < (왼쪽부터 채운다는 의미로 왼쪽 정렬)  // > (오른쪽부터 채운다는 의미로 오른쪽 정렬)

     

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

    :: 'python    '

    ### 여기서 {0 : < 10} 가독성을 좋게하기 위해 띄어쓰기를 할 경우 error이다, 질문하도록 하자

     

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

    :: '    python'

     

    print('{:<10}'.format('python'))

    : 'python    '

    ## 인덱스를 지정하지 않고 정렬방향만 정해줄수도 있다!!


    ## format method 를 이용한 숫자 개수 맞추기

    ## 숫자 갯수 맞추기 (정수)

    ## '%0개수d' % 숫자 구조 1

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

     

    print('%03d' % 1)

    :: 001

    ## %03d 에서  0을 다른 숫자나 문자로 바꾸면 정상 동작하지 않는다.

    ## %03d 에서 개수 == 3 은 자리수를 나타내는것으로 000 세자리를 만든 후 d 자리의 숫자 1을 오른쪽에서 부터 채운다!

    ## 디폴트 오른쪽 

     

    print('{0:03d}'.format(1))

    :: 001


    ## 숫자 갯수 맞추기 (실수)

    ## '%0개수.자리수f' % 실수

    ## {인덱스:0개수.자리수f}.format(실수)

    ## 소수점(.)도 공간(?)을 하나 차지한다는것을 주의하자

     

    print('%08.2f' % 3.6)

    :: 00003.60

    ## 총 8자리 만큼의 공간(?)을 만든다

    ## 0 1 2 3 4 5 6 7 의 공간이 있다고 가정하다 

    ## .2 로 소수점 2짜리까지 출력하는 것으로 하였으므로 5번 인덱스 자리에 소수점(.)을 위치시키고 양옆에 3.6을 위치시킨다.

    ## 0 1 2 3 (3 . 6 0) <-- 이렇게 오른쪽에서 부터 실수를 채운 후 나머지 공간을

    0 으로 채움 (0자리를 지울경우 공백으로 채움)

    ## 디폴트 오른쪽

    print('{0:08.2f}'.format(150.37))

    :: 00150.37

    ## 총 8자리 만큼의 공간(?)을 만든다

    ## 0 1 2 3 4 5 6 7 의 공간이 있다고 가정하다 

    ## .2 로 소수점 2짜리까지 출력하는 것으로 하였으므로 5번 인덱스 자리에 소수점(.)을 위치시키고 양옆에 150.37을 위치시킨다.

    ## 0 1 (1 5 0 . 3 7) <-- 이렇게 오른쪽에서 부터 실수를 채운 후 나머지 공간을 공백 으로 채움

    ## 디폴트 오른쪽


    ## format method에서 채우기와 정렬 조합해서 사용하기

    ## '{인덱스:채우기 정렬 길이 .자리수 자료형}'.format(값) 구조

     

    print('{0:0<10}'.format(15))

    :: 1500000000

     

    print('{0:x<10}'.format(15))

    :: 15xxxxxxxx

    ## 인덱스 : 0 , 채우기 : 0 (다른문자 가능), 정렬 : < or > , 길이 : 10

     

    print('{0:0<10.3f}'.format(15.11))

    :: 15.1100000

    ## 인덱스 : 0 , 채우기 : 0 (다른문자 가능), 정렬 : < or > , 길이 : 10, 자리수 : .3 (소수3째자리까지), 자료형: f(실수)



    print('{0: <10}'.format(15))

    :: '15        '

     

    print('{0:<10}'.format(15))

    :: '15        '

    ## 채우기 자리에 공백 또는 아무것도 넣지 않을 경우 공백 으로 채움!

     

    출처 : dojang.io/

     

    코딩 도장

     

    dojang.io

     

    728x90

    'TIL' 카테고리의 다른 글

    TIL. 18 Dictionary 조작하기  (0) 2020.10.26
    TIL. 17 python 과제 (목차확인)  (0) 2020.10.25
    TIL. 15 again python_문자열 메서드  (0) 2020.10.23
    TIL.14 Javascript_카드 맞추기 게임  (0) 2020.10.22
    TIL.13 Javascript_초급_3  (0) 2020.10.21
Designed by Tistory.