상태이상 : 호기심 중독

이것저것 알아두면 언젠간 도움이 된다.

코딩/Python!

서식 [Python]

IT코코아 2018. 1. 19. 23:56

저번에 배운 함수중에 출력함수인 print("")함수가 있었죠..
함수안의 큰 따옴표안에 우리가 출력하고자하는 문자열을 넣어 실행시키면 출력이 되는 형태였습니다. 
하지만 우리는 출력을 할때 우리가 넣은 고정된 문자열만 출력하지 않지요.
우린 변수도 출력시켜야 하기 때문에 서식문자라는 것을 배워야 합니다.

Python에서는 2가지 스타일의 서식문자를 사용할 수 있습니다.
C에서의 서식문자는 %d %f %c 등등이 있었습니다.
Python에서도 비슷하게 사용이 가능합니다. 한번 봅시다.

vsCode에 print("%s:%d" %('나이',30)) 를 쳐서 실행 시켜 봅시다.

아래에 나이:30으로 잘 나오는게 보이죠?

이번엔 Python 3부터 지원된 서식문자를 사용해 봅시다.
print("{}:{}".format("나이",18)) 을 쳐주시고 실행시켜봅시다.

마찬가지로 잘 나옵니다. 추가로 설명을 하자면 C의 서식문자와 다르게 Python 서식문자는 %를 사용하지 않고 {}과 .format()을 사용하는 것이 보일겁니다. {}는 %와 비슷한 역할을 하며, .format은 printf("%d",18);에서 ,18을 담당하는 것과 같습니다. C와 마찬가지로 " "안에 {}의 순서(왼쪽→오른쪽)대로 .format()안의 변수나 상수가 차례로 들어가게 됩니다.

여기서 주의해야 할 것은 {}안에 기본적으로 들어갈 수 있는 타입은 정수와 문자만을 넣을 수 있습니다.
그러면! 실수는 어떻게 집어 넣느냐! {:f}이런식으로 써야합니다. 나타내고자하는 소수점을 정해주고 싶다{:.2f} 이런식으로 사용하여 정해주면 됩니다. 물론 .2는 소수점 둘째자리까지 나타낸다는 뜻.
아, 그리고 물론 C스타일의 서식문자를 사용하여 출력해도 됩니다. 
직접 코드를 짜서 실행시켜 봅시다.



다음은 다른 진법의 출력입니다. C에서는 %o %x %X등을 사용했죠.
마찬가지로 C스타일과 Python스타일 모두를 해봅시다. 

print('%o, %x, %X' %(10,10,10))
print("{:o}, {:x}, {:X}" .format(10,10,10))
이렇게 쳐서 실행시켜 봅시다.

잘 나오죠?? Python은 c와는 다르게 2진법도 변환해주어서 {:b}도 사용할 수 있습니다.

다음으론 .format()을 사용할 때 주의점입니다.
.format이 ""인 문자열 뒤에 사용이 되는데, 전에 배운 구분자뒤에 end=""와 sep=""와 같이 사용할 때 
주의하여 사용하셔야 합니다.

print('{}, {}',end=' ' .format(10,10)) 이 코드를 실행시켜 봅시다.

음???? 출력된걸 확인해 보니 {}, {}만 나와있네요????

그렇다면 아래에 print('{:b}, {:o}', end=' {:b}, {:o}' .format(10,10))을 쳐서 실행해보죠.
아아, 드디어 어떻게 된것인지 알겠죠?

.format은 자신의 앞에 있는 "" 또는 ''안의 스트링의 서식에 들어가게된다는 것입니다.
그렇다면 .format을 사용할 땐 sep와 end를 사용하면 안되는 걸까요? 아닙니다.
단순히 순서만 바꾸어 사용하면 되는 간단한 문제였습니다. 이렇게 말이죠.

.format은 자신의 바로앞의 ""또는''에 들어가니 end나 sep와의 자리를 바꾸어 출력되는 부분의 바로 뒤에 써서 사용하면 되는 것이죠!
이것을 주의하시고 .format을 사용하시면 되시겠습니다.

다음은 고정길이 출력 입니다.

print("|%5d|" %123)
print("|%5s|" %'abc')
print("\n")
print("|{:5}|".format(123)) 
print("|{:5}|".format('123'))
print("|{:5}|".format('abc')) 
print("\n")
을 실행 시켜 봅시다. ||는 길이의 구분이 더욱 쉽도록 추가한 것 입니다.
C스타일과 Python스타일의 차이점이 보이시나요??
C스타일은 정수든 문자든 무조건 기본적으로 오른쪽 정렬이며 왼쪽 정렬을 사용하고자한다면 숫자앞에 -를 붙여주여야 합니다.
반면 Python스타일은 정수는 오른쪽 정렬, 문자열은 왼쪽정렬이 되는 것을 확인 할 수있습니다.
 
다음은 고정길이 정렬입니다.
 
print("\n C스타일")
print("|%-5d|" %123) 
print("|%5s|" %'abc')
print("\nPython스타일")
print("|{:<5}|".format(123)) 
print("|{:>5}|".format(123)) 
print("|{:^5}|".format(123)) 
print("|{:^6}|".format(123))
을 치시고 실행 시켜봅시다.
 
C스타일에 비해 Python스타일이 더욱 다양한 정렬을 할 수 있다는 것을 보여주고있습니다.
특히 가운데 정렬이 눈에 뛰는데요. 가운데 정렬에서 홀수의 크기를 잡으면 중간이 딱 잡혀서 괜찮은데 짝수의 크기를 잡으면 정확하게 가운데를 잡지못해서 살짝 왼쪽으로 치우쳐져 정렬되는 것입니다.
 
다음은 여백 채우기 입니다.
print("\n여백 채우기")
print('|%05d|' % 123)
print('|{:05}|'.format(123))
print('|{:_>5}|'.format('abc'))
print('|{:-^5}|'.format('abc'))

정렬과 함께 사용이 가능하며 0말고도 다른 걸로 채우기가 가능합니다.

마지막으로는 Python에만 있는 정수 실수 단위구분 기능입니다.

print("\n정수, 실수 단위 구분")
print('{:,}'.format(1000000)) 
print('{:,.2f}'.format(1000000)) 

단위를 구분해주는 단지 그 뿐인 기능입니다.

여기까지 파이썬 서식에 관하여 모두 알아 봤습니다!

반응형