세조목

PYTHON 정리(점프투파이썬 - 정렬과 공백, 소수점 표현)(23.12.29) 본문

데이터 분석 공부/Python

PYTHON 정리(점프투파이썬 - 정렬과 공백, 소수점 표현)(23.12.29)

세조목 2023. 12. 29. 20:45
  • 본 내용들은 PYTHON을 공부하면서 차후 제가 복습하기위해 정리해놓은 것으로 제가 새롭게 알게된 내용들만을 정리하였습니다. 또한 배움이 부족하여 미처 다 파악하지 못한 부분들도 많으니 혹시나 이 포스팅을 보시는 분들께서는 다른 포스팅, 도서, 강의도 함께 참고하시기 바라겠습니다.

 

점프 투 파이썬

1. 정렬과 공백

"%15s" % "hi"
'        hi'

%숫자를 결합하면 문자열을 정렬하고 공백을 지정할 수 있다.

먼저 %15s의 경우 전체 길이가 15개인 문자열 공간에 대입되는 값을 오른쪽으로 정렬하고 나머지 부분은 공백으로 놔두라는 의미이다.

 

그렇다면 %-15s의 경우는 어떨까??

"%-15s" % "hi"

- 가 붙으면 왼쪽정렬하라는 의미이다.

그래서 문자열의 전체 길이는 15가 되며 값은 왼쪽정렬하게되고 나머지 공간은 공백으로 채워진다.

 

"%15s Tomy" %"hi"

위와 같은 경우는 결과가 어떻게 나올까??

'             hiTomy'

일단 15s니 문자열의 전체 길이가 15일 것이고, 양수이므로 오른쪽 정렬이 될 것이다.

15개의 공간 안에 "hi"가 오른쪽 정렬돼서 들어가니 오른쪽 14, 15번째 자리에 "hi"가 들어가고,

그 다음에 "Tomy"가 입력된다.

 

"%-15sTomy" %"hi"

"%-15sTomy"%"hi"의 경우 마찬가지로 총 15개의 문자열 길이가 형성되고 "hi"는 왼쪽 정렬되며

"Tomy"는 16번째 자리부터 입력된다.

음수이기때문에 "hi"가 왼쪽정렬되고, Tomy는 오른쪽 끝에 위치하게되어 아래와같은 결과값이 나오게 된다.

'hi             Tomy'

 

2. 소수점 표현

%와 숫자를 조합해서 소수점도 표현할 수 있다.

"%0.3f" %4.17533

"%0.3f" %4.17533의 경우 소수점 셋째자리까지 나타내겠다는 코드이므로

결과값은 4.175가 된다.

코드를 하나 하나 뜯어보면

  1. %뒤에 나오는 0은 문자열의 전체 길이를 의미하는데 0의 경우 길이에 상관하지 않겠다는 의미이고 0을 생략해도 무방하다.
  2. ' . ' 은 소수점 포인트를 의미하고
  3. 그 뒤의 숫자는 몇 번째 자리까지 나타낼 것인지를 나타낸다.
"%13.1f"" %2.73261

 

"%13.1f" %2.73261의 결과값은 어떻게 될까??

  1. ' . ' 앞에 숫자가 13이기때문에 문자열의 전체 길이는 13이 되고 오른쪽 정렬시킨다.
  2. ' . ' 뒤에 숫자 1이 오기 때문에 소수점 첫째 자리까지 출력된다.

그렇게 했을때의 결과값은 아래와 같다.

'          2.7'

 

% 뒤에 음수가 들어가면 어떻게 된다고??

"%-13.1f" %2.73261

- 는 왼쪽 정렬을 의미하기때문에 2.7이라는 값이 왼쪽에 정렬되고 나머지 공간은 공백으로 처리되기때문에 결과값이 아래와 같이 출력된다.

'2.7          '

 

3. 문자열 포매팅(f-string)

지금까지는 문자열을 합칠때 +를 사용하는 경우가 많았다.

아래와 같이 말이다.

"python" + "what" + "food" + "Jason"
=> "python what food Jason"

 

 

그런데 + 연산자를 사용하지 않고서도 문자열을 간단하게 합칠수 있는 방법이 있는데 그것이 바로 f-string이다.

>>> for i in range(1, 5):
>>> 	print(f'나의 나이는 {i}살입니다.')
    
나의 나이는 1살입니다.
나의 나이는 2살입니다.
나의 나이는 3살입니다.
나의 나이는 4살입니다.

이렇게 활용할 수 있는데 f-string을 활용하지 않는다면 아래와 같이 문자열을 합쳐야한다.

>>> for i in range(1, 5):
>>>		print("나의 나이는" + " " + str({i}) + "살입니다.")

나의 나이는 1살입니다.
나의 나이는 2살입니다.
나의 나이는 3살입니다.
나의 나이는 4살입니다.

f-sting을 활용하는 것이 훨씬 간결하다.

 

딕셔너리의 경우 아래와 같이 사용할 수 있다.

person = {"name" : "cheolsu", "age" : 33}
f'그의 이름은 {person["name"]}이고 나이는 {person["age"]}입니다.'
>>> '그의 이름은 cheolsu이고 나이는 33입니다.'

 

정렬, 공백채우기, 소수점 표현, 중괄호 넣기는 어떻게 할 수 있을까??

 

● 정렬

# 왼쪽 정렬
f'{"hi":<8}'
>>>'hi      '

# 오른쪽 정렬
f'{"maigc":>12}'
>>> '       magic'

# 가운데 정렬
f'{"sauce":^11}'
>>> '   sauce   '

 

공백 채우기

f'{"cam":=<10}'
>>> 'cam======='

f'{"fake":3^14}'
>>> '33333fake33333'

 

 

소수점 표현

spot = 5.1235632
f'{spot:0.3f}'
>>> '5.124'

f'{spot:5.3f}'
>>> ' spot'

f'{spot:>10.5f}'
>>> '   5.12356'

 

중괄호 넣기

f'{{This is}}'
>>> '{This is}'