Programming/Python

[Python 3.7] 파이썬 문자열 서식 지정자, 포매팅 사용법

Nirsa 2020. 2. 3. 13:16
반응형

 

  • 1. 서식 지정자

  • 서식 지정자를 이용해 문자열 작성

문자열을 아래와 같이 넣습니다. %s가 서식 지정자에서 문자열을 뜻하게 되는데, % 후에 들어간  문자열이 %s 로 오게 됩니다. 숫자는 %d 로 사용 됩니다.

여러개의 문자열을 넣을 땐 소괄호로 묵어주시면 되고, 왼쪽에서부터 순서대로 들어 갑니다.

print('My name is %s' % 'nirsa')

# 문자열 여러개 표현
print('My name is %s %s' % ('nirsa1', 'nirsa2'))

 

  • 서식 지정자를 이용해 소수점 표현

서식지정자의 소수점 표현은 '%f' % 숫자를 입력 하거나 '%.자릿수f' % 숫자를 입력하여 소수점을 표현할 수 있습니다.

print('%f' % 5.5)
결과 값 : 5.500000

print('%.2f' % 5.5)
결과 값 : 5.50

 

  • 2. 문자열 포매팅

  • 포매팅 기본 사용

어떤 문자열을 만들 때 서식 지정자보단 포매팅이 많이 이용 됩니다. {} 에는 인덱스가 오게 되는데 인덱스를 사용하여 같은 값을 여러번 사용할수도 있고, 인덱스를 생략하면 0부터 순서대로 입력 됩니다.

# 값 하나 할당
print('Hello, {0}'.format('world!'))

# 값 여러개 할당
print('Hello, {0} {1}'.format('World!', 'Python'))

# 인덱스 생략
print('Hello, {} {}'.format('World!', 'Python'))

# 값 여러번 사용
print('Hello, {0} {0} {1} {1}'.format('World!', 'Python'))

 

또한 아래와 같이 순서를 섞을 수 있는데 format 뒤에있는 왼쪽 문자열 하나부터 인덱스 {0} 으로 시작하여 문자열이 증가할 때 마다 {1}, {2}와 같이 인덱스가 1씩 증가 합니다.

print('Hello, {0} {2} {1}'.format('World!', 3.7, 'Python'))

 

  • 포매팅 이름 지정

위에선 인덱스를 사용 했는데, 인덱스 대신 값의 이름을 사용할 수 있습니다. format 뒤의 값을 딕셔너리 형식으로 작성 해주시면 됩니다. 

print('Hello, {language} {version}'.format(language='Python', version=3.7))

 

  • 포매팅 문자열 정렬

포매팅을 사용해서도 문자열 정렬이나 문자열의 개수를 맞출 수 있습니다. 부등호의 방향에 따라 왼쪽 정렬인지 오른쪽 정렬인지가 정해지며 부등호가 오른쪽을 본다면 오른쪽 정렬, 왼쪽을 본다면 왼쪽 정렬로 생각 하셔도 됩니다.

# 왼쪽 정렬, 남는 길이는 x로 출력
'{0:x<15}'.format('Hello, World!')
결과값 : 'Hello, World!xx'

# 오른쪽 정렬, 남는 길이는 x로 출력
'{0:x>15}'.format('Hello, World!')
결과값 : 'xxHello, World!'

위와 같이 0:x<15 를 사용할 경우 남는 길이를 x로 넣고, < 왼쪽 정렬, 15 길이는 15입니다. 만약 x값에 아무것도 넣지 않으면 공백으로 들어 갑니다.

 

  • 포매팅 숫자 채우기 및 소수점 표현

아래와 같이 포매팅을 이용해 앞자리를 0으로 채우거나, 소수점을 표현할 수 있습니다.

## 앞자리 0 채우기
# 숫자 35 앞자리를 0으로 채우되 길이를 3으로 출력
'{0:03d}'.format(35)
결과값 : 035

# 숫자 35 앞자리를 0으로 채우되 길이를 6으로 출력
'{0:06d}'.format(35)
결과값 : 000035


## 소수점 표현하기
# 숫자 155.99 앞자리를 0으로 채우되 길이는 8, 소수점은 5자리로 출력
'{0:08.5f}'.format(155.99)
결과값 : 155.99000

# 숫자 155.99 앞자리를 0으로 채우되 길이는 7, 소수점은 2자리로 출력
'{0:07.2f}'.format(155.99)
결과값 : 0155.99

 

반응형