코딩 노트

02-4 숫자와 문자열의 다양한 기능 본문

Python

02-4 숫자와 문자열의 다양한 기능

newbyeol 2021. 4. 17. 20:10

1. 문자열의 format() 함수

format() 함수는 문자열이 가지고 있는 함수이다.

중괄호{}를 포함한 문자열 뒤에 마침표(.)를 찍고 format() 함수를 사용하는데, 중괄호 개수format 함수 괄호 안

매개변수의 개수반드시 같아야 한다.

 

"{}".formaat(10)
"{}{}".format(10, 20)
"{}{}{}{}{}".format(101, 202, 303, 404, 505)

이러한 형태로 함수를 사용하면 앞쪽에 있는 문자열의 {}기호가 format() 함수 괄호 안에 있는 매개 변수로

차례로 대치되면서 숫자가 문자열이 되는 것이다. 즉 예시에서 10은 문자열의 중괄호 부분에 들어가

숫자 10이 문자열 "10"이 되는 것이다.

 

# format() 함수로 숫자를 문자열로 변환하기
string_a = "{}",format(10)

# 출력하기
print(string_a)
print(type(string_a)

코드를 실행하니 숫자 10의 자료형은 문자열이 되었으며, string_a에는 문자열 10이 들어 있는 게 확인되었다.

 

format이라는 함수는 {} 기호를 format의 괄호 안에 있는 매개변수로 대체하는 것뿐이기 때문에

{}기호 앞 뒤 혹은 {}기호와 {}기호 사이에 다양한 문자열을 넣을 수 있다.

 

· format() 함수의 다양한 형태

# format() 함수로 숫자를 문자열로 변환하기
format_a="{}만 원".format(5000)
format_b="파이썬 열공하여 첫 연봉{}만 원 만들기 ".format(5000)
format_c="{} {} {}".format(3000, 4000, 5000)
format_d="{} {} {}".format(1, "문자열", True)

#출력하기
print(format_a)
print(format_b)
print(format_c)
print(format_d)

2. format() 함수의 다양한 기능

· 정수를 특정 칸에 출력하기

# 정수
output_a="{:d}".format(52)

#특정 칸에 출력하기
output_b="{:5d}".format(52)
output_c="{:10d}".format(52)

#빈칸을 0으로 채우기
output_d="{:05d}".format(52)
output_e="{:05d}".format(-52)

print("#기본")
print(output_a)
print("#특정 칸에 출력하기")
print(output_b)
print(output_c)
print("#빈칸을 0으로 채우기")
print(output_d)
print(output_e)

2행의 output_a는 {:d}를 사용했다. int 자료형의 정수를 출력하겠다고 직접적으로 지정하는 것이다. 

따라서 {:d}를 사용했을 때는 매개변수로 정수만 올 수 있다.

 

5~6행의 output_b와 output_c는 특정 칸에 맞춰서 숫자를 출력하는 형태이다.

{:5d}라고 입력하면 5칸을 잡고 뒤에서부터 52라는 숫자를 채운다. {:10d}도 마찬가지이다.

 

8~9행의 output_d와 output_e는 빈칸을 0으로 채우는 형태이다. {:05d}라고 지정하면 5칸을

잡고 뒤에서부터 52라는 숫자를 넣은 후, 앞의 빈 곳을 0으로 채운다. output_d는 양수, output_e는 음수인데,

부호가 있을 때는 맨 앞자리를 부호로 채우고 나머지 빈 곳을 0으로 채운다.

 

· 기호 붙여 출력하기

#기호와 함께 출력하기
output_f ="{:+d}".format(52) #양수
output_g="{:+d}".format(-52) #음수
output_h="{: d}".format(52)#양수: 기호 부분 공백
output_i ="{: d}".format(-52)#음수:기호 부분 공백

print(" 기호와 함께 출력하기")
print(output_f)
print(output_g)
print(output_h)
print(output_i)

2~3행의 {:+d}처럼 앞에 +기호를 추가하면 양수의 경우에는 +기호를 붙여준다.

output_f의 출력 결과를 보면 쉽게 이해할 수 있다.

 

4~5행의 {: d}처럼 앞에 공백을 두면 양수의 경우에 기호 위치를 공백으로 비워준다.

원래 "52"처럼 출력되었다면 output_h는 " 52"로 출력된다.

 

· 조합해 보기

output_h="{:+5d}".format(52) #기호를 뒤로 밀기: 양수
output_i="{:+5d}".format(-52) #기호를 뒤로 밀기: 음수
output_j="{:=+5d}".format(52) #기호를 앞으로 밀기: 양수
output_k="{:=+5d}".format(-52) #기호를 앞으로 밀기: 음수
output_l="{:+05d}".format(52) # 0으로 채우기: 양수
output_m="{:+05d}".format(-52) # 0으로 채우기: 음수

print("# 조합하기")
print(output_h)
print(output_i)
print(output_j)
print(output_k)
print(output_l)
print(output_m)

기호와 공백을 조합할 때는 = 기호를 앞에 붙일 수 있다. 이는 5칸의 공간을 잡았을 때 기호를 앞에 붙일 것인지,

숫자 앞에 붙일 것인지 지정하는 기호이다. 

 

· float 자료형 기본 ( {:f}를 사용한다 )

output_a = "{:f}".format(52.273)
output_b = "{:15f}".format(52.273) #15칸 만들기
output_c = "{:+15f}".format(52.273) #15칸에 부호 추가하기
output_d = "{:+015f}".format(52.273) #15칸에 부호 추가하고 0으로 채우기

print(output_a)
print(output_b)
print(output_c)
print(output_d)

 

추가로 부동 소수점의 경우는 소수점 아래 자릿수를 지정하는 기능이 있다.

다음 코드처럼 '.'을 입력하고 뒤에 몇 번째 자릿수까지 표시할지 지정하면 된다.

· 소수점 아래 자릿수 지정하기

output_a="{:15.3f}".format(52.273)
output_b="{:15.2f}".format(52.273)
output_c="{:15.1f}".format(52.273)

print(output_a)
print(output_b)
print(output_c)

이렇게 입력하면 15칸을 잡고 소수점을 각각 3자리, 2자리, 1자리로 출력한다. 이때 자동으로 반올림도 일어난다.

 

· 의미 없는 소수점 제거하기 ( {:g} )

output_a = 52.0
output_b = "{:g}".format(output_a)

print(output_a)
print(output_b)

파이썬은 0과 0.0을 출력했을 때 내부적으로 자료형이 다르므로 서로 다른 값을 출력한다.

그런데 의미 없는 0을 제거한 후 출력하고 싶을 때가 있는데 이때는 {:g}를 사용한다.

 

2. 대소문자 바꾸기: upper()와 lower()

upper()함수는 문자열의 알파벳을 대문자로, lower() 함수는 문자열의 알파벳을 소문자로 만든다. 

이 두 함수는 a의 문자열이 바뀌지 않는 (원본이 변하지 않음) 비파괴적 함수이다.

 

· upper() 함수의 예

>>> a = "Hello Python Programming...!"
>>> a.upper()
' HELLO PYTHON PROGRAMMING...! '

· lower() 함수의 예

>>> a.lower()
' hello python programming...! '

 

3. 문자열 양옆의 공백 제거하기: strip()

strip() 함수문자열 양옆의 공백을 제거한다.

왼쪽의 공백을 제거하는 istrip() 함수오른쪽 공백을 제거하는 rstrip() 함수도 있다.

이때 공백이란 '띄어쓰기', '탭', '줄바꿈'을 모두 포함한다.

 

큰따옴표 또는 작은따옴표를 세 번 반복한 기호는 여러 줄 문자열을 입력할 때 사용하는 것으로,

보기 쉽게 하려고 따옴표만 한 줄에 작성하면 문자열 위아래에 의도하지 않은 줄바꿈이 들어간다.

 

의도하지 않은 줄바꿈 및 문자열 양옆의 공백은 strip() 함수로 쉽게 제거할 수 있다.

이러한 기능을 trim이라고도 부른다. (lstrip() 함수와 rstrip()함수는 거의 사용하지 않는다)

 

4. 문자열의 구성 파악하기: isOO()

문자열이 소문자로만 구성되어 있는지, 알파벳으로만 구성되어 있는지, 숫자로만 구성되어 있는지 등을

확인할 때는 is로 시작하는 이름의 함수를 사용한다.

 

· isalnum(): 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인한다.

· isalpha(): 문자열이 알파벳으로만 구성되어 있는지 확인한다.

· isdentifier(): 문자열이 식별자로만 사용할 수 있는 것인지 확인한다.

· isdecimal(): 문자열이 정수 형태인지 확인한다.

· isdigit(): 문자열이 숫자로 인식될 수 있는 것인지 확인합니다.

· isspace(): 문자열이 숫자로만 구성되어 있는지 확인합니다.

· islower(): 문자열이 숫자로만 구성되어 있는지 확인합니다.

· isupper(): 문자열이 대문자로만 구성되어 있는지 확인한다.

 

출력은 True(맞다) 또는 Flase(아니다)라고 나오는데 이걸 불(boolean)이라고 부른다.

 

· 예제

>>> print("TrainA10".isalnum())
True
>>> print("10".isdigit())
True

 

5. 문자열 찾기: find()와 rfind()

문자열 내부에 특정 문자가 어디에 위치하는지 확인할 때 find() 함수와 rfind() 함수를 사용한다.

 

find(): 왼쪽부터 찾아서 처음 등장하는 위치를 찾는다.

rfind(): 오른쪽부터 찾아서 처음 등장하는 위치를 찾는다.

 

>>> output_a = "안녕안녕하세요".find("안녕")
>>> print(output_a)
0

>>> output_b = "안녕안녕하세요".rfind("안녕")
>>> print(output_b)
2

 

문자열은 가장 앞글자를 0번째라고 셉니다. 처음 "안녕"은 0번째에 있는 것이고,

두 번째 "안녕"은 2번째부터 등장하는 것이다. 따라서 실행결과로 0과 2가 나온 것이다.

ㅡㅡㅡㅡㅡㅡ

0 1 2 3 4 5 6

안 녕 안 녕 하 세 요

ㅡㅡㅡㅡㅡㅡ 

 

6. 문자열과 in 연산자

문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자를 사용한다.

출력은 True(맞다) 또는 False(아니다)라고 나옵니다.

 

"안녕하세요"문자열에 "안녕"을 포함하고 있으므로 True(맞다)라는 결과를 출력한다.

>>> print("안녕" in "안녕하세요")
True

"안녕하세요"라는 문자열에 "잘자"는 포함하고 있지 않으므로 False(아니다)를 출력한다.

>>> print("잘자" in "안녕하세요")
False

 

7. 문자열 자르기: split()

문자열을 특정한 문자로 자를 때는 split() 함수를 사용한다.

예제에서는 split 함수 괄호 안의 문자열인 공백(띄어쓰기)을 기준으로 자른다.

 

>>> a = "10 20 30 40 50".split(" ")
>>> print(a)
['10', '20', '30', '40', '50']

실행결과로 리스트(list)가 나온다.

'Python' 카테고리의 다른 글

03-2 if~else와 elif 구문  (0) 2021.04.20
03-1 불 자료형과 if 조건문  (0) 2021.04.18
02-3 변수와 입력  (0) 2021.04.17
02-2 숫자  (0) 2021.04.12
02-1 자료형과 문자열  (0) 2021.04.12