안녕하세요!!
이번 시간에는 문자열 포매팅을 더 활용하는 시간을 가져보도록 하겠습니다.
이전 포스팅에서 이야기했듯이 아래의 포맷 코드는
숫자와 함께 사용하면 더 유용하게 사용할 수 있습니다!
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수 |
%f | 부동소수 |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
1. 정렬과 공백
문자열을 작성할 때 왼쪽이나 오른쪽 정렬을 해야할 때는
아래의 예시처럼 사용하면 됩니다.
"%10s" % "hi"
>>" hi"
%10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고
그 앞의 나머지는 공백으로 남기라는 의미입니다.
반대로 왼쪽 정렬을 하고 싶을 때는 %-10s을 사용하면 되겠죠!!
"%-10sjane." % "hi"
>>"hi jane"
이렇게 하면 hi는 왼쪽 정렬이 되고 나머지는 공백으로 채웠음을 알 수 있습니다.
2. 소수점 표현하기
원주율 3.14159265358979 라는 소수점이 있을 때
소수점 세 번째 자리까지만 나타내고 싶은 경우에는 아래와 같이 사용할 수 있습니다.
"0.3f" % 3.14159265358979
>>"3.141"
여기서 ' . '의 의미는 소수점 포인트를 말하고
그 뒤의 3은 소수점 뒤에 나타낼 숫자의 갯수를 말합니다.
1번과 2번을 응용해보도록 하겠습니다.
"%10.4f" % 3.14159265358979
>>" 3.1415"
소수점 넷째 자리까지만 표시하고 전체 길이를 10개로 설정해주었기 때문에
나머지 8 글자에는 공백을 넣어 오른쪽 정렬을 했습니다.
format 함수를 사용한 포매팅
문자열의 format 함수를 사용하면
좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있습니다.
사용 방법은 간단한데요,
%를 사용했던 포맷 코드와는 다르게
중괄호 { } 를 사용하고 .format( ) 을 사용하여
문자열 포맷을 지정할 수 있습니다.
이렇게 글자로 보면 이해가 잘 안가실테니
앞서 살펴본 문자열 포매팅 예제를
format 함수를 사용해 바꿔보도록 하겠습니다.
1. 숫자 대입
"I eat {0} apples." .format(3)
>> "I eat 3 apples."
2. 문자열 대입
"I eat {0} apples." .format("four")
>> "I eat four apples."
3. 2개 이상의 값 넣기
포맷 코드와 동일하게 여러 개의 값이 있으면
괄호와 순서대로 콤마( , )를 사용하여 구분해주면 되지만
인덱스 항목이 format 함수의 입력 값으로 순서에 맞게 바뀝니다.
number = 10
day = "four"
"I ate {0} apples. so I was sick for {1} days." .format(number, day)
>> "I ate 10 apples. so I was sick for four days."
4. 입력 값 사용하기
"I ate {number} apples. so I was sick for {day} days." .format(number=10, day=4)
>> "I ate 10 apples. so I was sick for four days."
위의 방법은 인덱스를 사용하는 대신 더 편리한 형태입니다.
하지만 {name} 형태를 사용할 경우
format 함수에는 반드시 name=value 와 같은 형태의 입력 값이 있어야합니다.
만약 {number}, {day}로 값을 넣었는데
.format(number, day=4) 이런 식으로 줬다면
옳지 않은 형식이기에 오류가 납니다.
그 외의 포매팅
1. 왼쪽, 오른쪽 정렬
" :< " 혹은 " :> "를 사용하면 각각 왼쪽, 오른쪽 정렬을 할 수 있습니다.
정렬의 방향은 화살표 방향을 생각하면 어느 쪽으로 정렬되는지 바로 알 수 있습니다!
왼쪽 정렬
"{0:<10}".format("hi")"
>>"hi "
오른쪽 정렬
"{0:>10}".format("hi")
>>" hi"
2. 가운데 정렬
" :^ " 기호를 사용하면 가운데 정렬도 가능합니다!
"{0:^10}".format("hi")
>>" hi "
3. 공백 채우기
앞서 공백을 사용해 문자열 정렬을 했었는데
이 공백을 다른 문자로 대체할 수도 있습니다!
채워 넣을 문자 값은 정렬 문자 >, <, ^ 바로 앞에 넣어야합니다.
"{0:=^10}".format("hi")
>>"====hi===="
"{0:!<10}".format("hi")
>>"hi!!!!!!!!"
f 문자열 포매팅
파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있습니다.
name = "jane"
age = 44
f"내 이름은 {name}입니다. 나이는 {age}입니다."
>> "내 이름은 jane입니다. 나이는 44입니다."
위의 예시처럼 문자열 앞에 접두사 f를 붙이면
f 문자열 포매팅을 사용할 수 있습니다.
name, age와 같은 변수 값을 생성한 후에 그 값을 참조할 수 있습니다.
표현식을 사용하거나 정렬을 할 수도 있습니다.
표현식 사용
age = 32
f"나는 내년이면 {age+2}살이 된다."
>> "나는 내년이면 34살이 된다"
정렬
f ' {"hi" :<10}' // 왼쪽 정렬
>> 'hi '
f ' {"hi" :>10}' // 오른쪽 정렬
>> ' hi'
f ' {"hi" :^10}' // 가운데 정렬
>> ' hi '
공백 채우기, 소수점 표현하기 등도
f 문자열 포매팅을 사용해서 표현할 수 있습니다.
문자열 관련 함수
문자열 자료형은 자체적으로 함수를 가지고 있습니다.
이를 내장 함수라고 하는데요,
이 내장 함수를 사용하려면
문자열 변수 이름 뒤에 ' . '을 붙여 함수 명을 사용하면 됩니다.
1. 문자 개수 세기 (count)
문자열에 포함된 특정 문자의 갯수를 알려주는 함수입니다.
a = "happy"
a.count('p')
>> 2
2. 위치 알려주기 1(find)
문자열 중 특정 문자가 처음 나온 위치를 반환합니다.
만약 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환합니다.
a = "Python is the best programming language"
a.find('s')
>> 8
a.find('c')
>> -1
3. 위치 알려주기 2 (index)
find 뿐만 아니라 index로도 특정 문자의 위치를 알 수 있는데
find와 다른 점은 찾는 문자나 문자열이 존재하지 않으면 오류를 발생시킵니다.
a = "Python is the best programming language"
a.find('s')
>> 8
a.find('c')
>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
4. 문자열 삽입 (join)
join 함수를 사용하면 문자열 뿐만 아니라 리스트, 튜플도 입력으로 사용할 수 있습니다.
리스트와 튜플은 나중에 자세하게 다루도록 하겠습니다!
",".join('abcd')
>> "a,b,c,d"
5. 소문자를 대문자로 (upper) / 대문자를 소문자로 (lower) 바꾸기
upper와 lower는 각각 소문자인 문자나 문자열을 대문자로,
대문자인 문자나 문자열을 소문자로 바꿔줍니다.
a = "HI"
b = "python"
b.upper( )
>> "PYTHON" // 소문자 python을 대문자로 변경
b.lower( )
>> "hi" // 대문자 HI를 소문자로 변경
6. 왼쪽 공백 지우기 (lstrip) / 오른쪽 공백 지우기(rstrip)
왼쪽 공백을 지우는 lstrip는 문자열 중
가장 왼쪽에 있는 한 칸 이상의 연속된 공백들을 모두 지웁니다.
a = " Python "
a.lstrip( )
>> "Python "
반대로 rstrip는 문자열 중 가장 오른쪽에 있는
한 칸 이상의 연속된 공백들을 모두 지웁니다.
a = " Python "
a.rstrip( )
>> " Python"
대충 짐작하셨겠지만 lstrip의 l은 left를,
rstrip의 r은 right를 말합니다.
7. 양쪽 공백 지우기 (strip)
l이나 r이 아닌 그냥 strip는 양쪽의 한 칸 이상의 연속된 공백을 모두 지웁니다.
a = " Python "
a.strip( )
>> "Python"
8. 문자열 바꾸기 (replace)
replace는 replace(바뀌게 될 문자열, 바꿀 문자열)로 사용해서
문자열 안의 특정한 값을 다른 값으로 치환할 수 있습니다.
a = "Java is good programming language"
a.replace("Java", "Python")
>> "Python is good programming language"
9. 문자열 나누기 (split)
split 이라는 뜻에 알맞게 split 함수는 변수명.split( )처럼 사용하는데
( ) 괄호 안에 아무것도 넣지 않으면 스페이스, 탭, 엔터 등을 기준으로 문자열을 나누어줍니다.
이렇게 나눈 값들은 리스트에 하나씩 들어가게 됩니다.
a = "Life if too short"
a.split( )
>> ['Life', 'is', 'too', 'short']
b = "a:b:c:d"
b.split( ' : ' )
>> ['a', 'b', 'c', 'd']
이번 포스팅에서는 문자열 포매팅을 배움과 동시에
문자열 관련 함수들에 대해 배웠습니다.
이로서 문자열에 관련된 포스팅은 끝이 났네요!!
다음 포스팅에서는 오늘 여러번 언급했던
리스트 자료형에 대해 배워보도록 하겠습니다!!!
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 01. 자료형 - 리스트 자료형 (1) (0) | 2022.06.10 |
---|---|
[Python] 01. 자료형 - 문자열 자료형(2) (0) | 2022.06.03 |
[Python] 01. 자료형 - 문자열 자료형(1) (0) | 2022.06.02 |
[Python] 01. 자료형 - 숫자형(Number) (0) | 2022.06.01 |
댓글