3자료형(Number, 문자열)
자료형
- 데이터를 표현하는 형태.
- 파이썬은 변수에 어떤 값을 넣느냐에 따라 자료형이 자동으로 정해진다.
- 파이썬은 자료형 자체가 구분되어 있지 않고 모든 데이터를 객체로 만들어 관리한다.
id
- 저장된 메모리 주소(고유한 ID값)를 반환해 준다.
# id
# 생성 된 객체를 구분하기 위한 일련번호를 확인할 수 있다.
print(id(100))
print(id(200))
print(id(100))
140710623856152
140710623859352
140710623856152
숫자형 (Number)
- 수학적인 계산이나 숫자 데이터를 다룰 때 사용하는 자료형이다.
- 정수(int), 실수(float), 복소수(complex) 값을 관리하는 객체
# 다른 형태의 값으로 생성할 수 있다.
# int() : 다른 숫자형을 가지는 값을 정수 타입으로 변환시켜 준다.
a1 = int(11.11) # 실수 타입은 반올림해준다.
a2 = int(True) # bool 타입의 True는 1, False는 원래 0 이다.
a3 = int('100') # 문자열로 된 숫자도 정수 타입으로 변환시킬 수 있다.
print(a1, a2, a3)
a1 = float(11) # 정수 타입은 뒤에 .0을 붙혀서 실수형으로 변환시켜 준다.
a2 = float(True) # True는 원래 1이기 때문에 1.0으로 변환시킨다.
a3 = float('11.11')
print(a1, a2, a3)
# bool 타입은 값을 가지기만 하면 모두 True로 가진다. (0이나 "", None 등만 아니라면)
a1 = bool(11)
a2 = bool(11.11)
a3 = bool('100')
a4 = bool(0)
a5 = bool(" ") # 문자열 안에 공백도 값에 해당한다.
print(a1, a2, a3, a4, a5)
11 1 100
11.0 1.0 11.11
True True True False True
숫자형에서 사용하는 함수
abs
- 절대값을 구해준다.
# abs
# ()안에 넣어준 값의 절대값을 구해준다
a1 = abs(30)
a2 = abs(-30)
print(a1)
print(a2)
30
30
ceil
- 소수점 이하를 올림여여 정수로 만들어 준다.
# ceil
import math # ceil이나 floor는 math모듈 안에 있기 때문에 import math를 먼저 해줘야 한다.
# ()안에 넣어준 값을 올림한다.
a1 = math.ceil(100)
a2 = math.ceil(55.55)
a3 = math.ceil(-55.55)
print(a1, a2, a3)
100 56 -55
floor
- 소수점 이하를 버리고 가장 가까운 정수 중 작은 수로 내림한다.
# 소수점 이하 내림
import math
# ()안에 넣어준 값을 내림한다.
a1 = math.floor(100)
a2 = math.floor(55.55)
a3 = math.floor(-55.55)
print(a1, a2, a3)
100 55 -56
min, max
- 주어진 값에서 최소값 또는 최대값을 가져온다.
- min : 최소값, max : 최대값
# min, nax
a1 = min(30, -10, -20, 40)
a2 = max(30, -10, -20, 40)
print(a1, a2)
-20 40
round
- 소수점 이하를 반올림한다.
- round(값, 자릿수)
# 소수점 이하 반올림
a1 = round(22.22)
a2 = round(55.55)
# 소수점 이하 두 번째 자리를 기준으로 반올림
a3 = round(22.22, 1)
# 1의 자리를 기준으로 반올림
a4 = round(22.22, -1)
print(a1, a2, a3, a4)
22 56 22.2 20.0
문자열(String)
- 글자들의 모음.
- 파이썬은 작은 따옴표(‘) 또는 큰 따옴표(“)로 묶은 모든 것들이 모두 문자열이다.
# 문자열 생성
# 큰 따옴표나 작은 따옴표로 작성하는 것 자체가 문자열 객체를 생성하는 것이다.
str1 = '안녕하세요'
str2 = "안녕하세요"
print('str1 :', str1)
print('str2 :', str2)
print(type(str1))
print(type(str2))
str1 : 안녕하세요
str2 : 안녕하세요
<class 'str'>
<class 'str'>
- 문자열 안에 따옴표를 사용할 때는 문자열이 큰 따옴표로 이루어져있다면 작은 따옴표를 작은 따옴표로 이루어져있다면 큰 따옴표를 사용해서 나타낸다.
# 큰 따옴표를 포함하는 문자열을 사용하고자 한다면..
str1 = '이름은 "홍길동" 입니다'
# 작은 따옴표를 포함하는 문자열을 사용하고자 한다면..
str2 = "이름은 '홍길동' 입니다"
print(str1)
print(str2)
이름은 "홍길동" 입니다
이름은 '홍길동' 입니다
- 만약 문자열 안에 작은 따옴표와 큰 따옴표를 모두 포함하는 경우엔 문장을 (\ ‘ \ ‘) 또는 (\ “ \ “)로 감싸준다.
# 만약 문자열 안에 작은 따옴표, 큰 따옴표를 모두 포함하는 경우
str1 = '이름은 \'홍길동\' 이고 나이는 "20살" 입니다'
str2 = "이름은 '홍길동'이고 나이는 \"20살\" 입니다"
print(str1)
print(str2)
이름은 '홍길동' 이고 나이는 "20살" 입니다
이름은 '홍길동'이고 나이는 "20살" 입니다
여러줄 문자열
- 작은 따옴표 세 개 (‘’‘)나 큰 따옴표 세 개 (“”“)로 묶어서 나타낸다.
# 여러줄 문자열
str1 = '''
동해물과 백두산이
마르고 닳도록
하느님이 보우하사
우리나라 만세
'''
str2 = """
동해물과 백두산이
마르고 닳도록
하느님이 보우하사
우리나라 만세
"""
print(str1)
print(str2)
동해물과 백두산이
마르고 닳도록
하느님이 보우하사
우리나라 만세
동해물과 백두산이
마르고 닳도록
하느님이 보우하사
우리나라 만세
에스케이프 문자
- \와 같이 작성하는 특별한 의미를 가진 문자
# 에스케이프 문자
# \ 와 같이 작성하는 특별한 의미를 가진 문자
# \n : 줄바꿈
# \t : tab
# \' : 작은 따옴표
# \\ : \
str1 = "동해물과\n백두산이"
print(str1)
str2 = "동해물과\t\t백두산이"
print(str2)
str3 = "동해물과\\백두산이"
print(str3)
동해물과
백두산이
동해물과 백두산이
동해물과\백두산이
- row string을 사용하면 에스케이프 문을 무시할 수 있다.
# row string
# 에스케이프 문자를 무시한다.
str1 = '동해물과\n백두산이\t마르고\\닳도록'
print(str1)
str2 = r'동해물과\n백두산이\t마르고\\닳도록'
print(str2)
동해물과
백두산이 마르고\닳도록
동해물과\n백두산이\t마르고\\닳도록
- ’’’ ‘'’나 “”” “"”을 사용한다면 에스케이프 문을 사용하지 않아도 된다.
str1 = '''이름은 '홍길동'이고 나이는 "20살" 입니다'''
str2 = """이름은 '홍길동'이고 나이는 "20살" 입니다"""
print(str1)
print(str2)
이름은 '홍길동'이고 나이는 "20살" 입니다
이름은 '홍길동'이고 나이는 "20살" 입니다
문자열 합치기
- 문자열을 더하기 연산자로 연산하면 하나의 문자열로 만들어 준다.
# 문자열 합치기
a1 = '문자열1' + '문자열2'
print(a1)
문자열1문자열2
- 문자열에 숫자를 곱해주면 해당 숫자만큼 문자열을 반복한다.
# 문자열 * 숫자 : 숫자만큼 문자열을 반복한 문자열이 생성된다.
str1 = '문자열1' * 3
print(str1)
문자열1문자열1문자열1
- 문자열과 다른 타입의 값을 +연산자로 합치는 것은 불가능하다.
-
만약 합치고자 한다면 다른 타입의 값을 문자열로 변환시켜야 한다.
-
- 다른 타입의 값을 str함수를 이용하여 문자열로 변환 후 문자열 합치기를 한다.
# str()로 변환하기.
a1 = '홍길동'
a2 = 20
a3 = 185
str1 = '이름은 ' + a1 + '이고 나이는 ' + str(a2) + '살 입니다. ' + a1 + '의 키는 ' + str(a3) + 'cm 입니다'
print(str1)
이름은 홍길동이고 나이는 20살 입니다. 홍길동의 키는 185cm 입니다
-
- 포멧 함수를 이용하여 다른 타입의 값을 문자열에 포함시킨다.
# 포멧 문자 사용
# 정수: %d, 실수 : %f, 문자열 : %s, 그 외에는 : %s
str2 = '이름은 %s이고 나이는 %d살 입니다. %s의 키는 %dcm 입니다' % (a1, a2, a3, a4)
print(str2)
-
- format메서드를 이용하여 다른 타입의 값을 문자열에 포함시킨다.
# format 사용
str3 = '이름은 {0}이고 나이는 {1}살 입니다. {0}의 키는 {2}cm 입니다'.format(a1, a2, a3)
print(str3)
이름은 문자열1문자열2이고 나이는 20살 입니다. 문자열1문자열2의 키는 185cm 입니다
-
- f 문자열을 사용하여 다른 타입의 값을 문자열에 포함시킨다.
# f 문자열 사용
str4 = f'이름은 {a1}이고 나이는 {a2}살 입니다. {a1}의 키는 {a3}cm 입니다'
print(str4)
이름은 문자열1문자열2이고 나이는 20살 입니다. 문자열1문자열2의 키는 185cm 입니다
문자열 내의 문자 접근
- 0부터 1씩 증가하는 순서값을 이용하여 첫 번째 글자부터 접근할 수 있다.
# 문자열 내의 문자 접근
str1 = "abcdefg"
# 첫 번째 글자
print(str1[0])
# 두 번째 글자
print(str1[1])
a
b
- -1 부터 1씩 감소하는 순서값을 이용하여 마지막 글자부터 접근할 수 있다
str1 = "abcdefg"
# 뒤에서 첫 번째 글자
print(str1[-1])
# 뒤에서 두 번째 글자
print(str1[-2])
g
f
- 문자열 슬라이싱을 이용하여 원하는 글자부터 접근할 수 있다.
- 문자열[시작:끝:간격]
# 순서값 2 ~ 5 - 1
print(str1[2:5])
# 처음 부터 5 - 1
print(str1[:5])
# 순서값 2 ~ 끝까지
print(str1[:])
cde
abcde
abcdefg
문자열 함수
len
- 해당 문자열의 글자 수를 셀 수 있는 함수이다.
- 문자열 외에도 리스트나 튜플 등 다른 자료형 타입에 값의 개수를 세는 것도 가능하다.
# len
str1 = 'abcdefg'
str2 = '가나다라마바사'
a1 = len(str1)
a2 = len(str2)
print(a1)
print(a2)
7
7
capitalize
- 첫 글자를 대문자로 변경하고 나머지 문자를 소문자로 변환시킨다.
# capitalize
str1 = 'hello world'
str2 = str1.capitalize()
print(str2)
str3 = 'hELLO WORLD'
str4 = str3.capitalize()
print(str4)
Hello world
Hello world
center, ljust, rjust
- 문자열을 주어진 크기로 늘려준다.
- center : 원본 문자열을 가운데 배치하고 나머지는 주어진 문자열을 채워준다.
- ljust : 원본 문자열을 좌측에 배치하고 나머지는 공백으로 채워준다.
- rjust : 원본 문자열을 우측에 배치하고 나머지는 공백으로 채워준다.
- 원하는 문자를 삽입하여 공백을 채우는 것도 가능하다.
# center, ljust, rjust
str1 = 'python'
str2 = str1.center(40)
print(f'[{str2}]')
str2 = str1.center(40, '_')
print(f'[{str2}]')
str3 = str1.ljust(40)
print(f'[{str3}]')
str3 = str1.ljust(40, '♠')
print(f'[{str3}]')
str4 = str1.rjust(40)
print(f'[{str4}]')
str4 = str1.rjust(40, '♥')
print(f'[{str4}]')
[ python ]
[_________________python_________________]
[python ]
[python♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠]
[ python]
[♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥python]
count
- 문자열 안에서 특정 문자가 몇 번 나오는지 세어주는 함수이다.
- 숫자 문자열이나 공백도 셀 수 있다.
- 알파벳의 경우 대소문자를 구분한다.
# count
str1 = 'abcd abcd abcd aaaa'
# 문자열내에 abcd가 몇개가 있는가..
a1 = str1.count('abcd')
print(a1)
# 문자열 내에 a가 몇개가 있는가..
a2 = str1.count('a')
print(a2)
# 앞에서 부터 10글자를 제외하고 a가 몇개가 있는가.
a3 = str1.count('a', 10)
print(a3)
# 앞에서 부터 10글짜를 제외하고 순서값 15번째 글자를 제외한 a가 몇개가 있는가
a4 = str1.count('a', 10, 15)
print(a4)
3
7
5
1
startswith, endswith
- startswith : 문자열이 특정 문자(또는 문자열)로 시작하는지 확인해주는 함수
- endswith : 문자열이 특정 문자(또는 문자열)로 끝나는지 확인해주는 함수
# startswith, endswith
str1 = 'abcdefg'
# 문자열이 abc로 시작하는가
a1 = str1.startswith('abc')
print(a1)
# 문자열이 zzz로 시작하는가
a2 = str1.startswith('zzz')
print(a2)
# 문자열이 efg로 끝나는가
a3 = str1.endswith('efg')
print(a3)
# 문자열이 zzz로 끝나는가
a4 = str1.endswith('zzz')
print(a4)
True
False
True
False
find, index
- 문자열 안에서 특정 문자가 어디에 있는지(인덱스)를 알려준다.
# find, index
# cd가 어디에 있는가
str1 = 'abcdefg'
a1 = str1.find('cde')
a2 = str1.index('cde')
print(a1)
print(a2)
2
2
- find : 문자열에서 **처음 등장하는 위치(인덱스)를 찾아준다. 없다면 -1을 반환한다.
- index : find와 유사하지만 없으면 에러가 난다
# 없는 문자열 찾기
a3 = str1.find('zzz') # find - 없는 문자열의 경우 -1
print(a3)
a4 = str1.index('zzz') # index - 없는 문자열의 경우 오류 발생
print(a4)
-1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[137], line 5
2 a3 = str1.find('zzz') # find - 없는 문자열의 경우 -1
3 print(a3)
----> 5 a4 = str1.index('zzz') # index - 없는 문자열의 경우 오류 발생
6 print(a4)
ValueError: substring not found
isalnum
- 문자열이 문자 또는 숫자로만 되어있는지 검사하는 함수이다.
- 만약 둘 중 하나라도 아닌 문자가 있다면 False를 반환한다.
# isalnum
str1 = 'abcd1234'
a1 = str1.isalnum()
print(a1)
str2 = 'abcd'
a2 = str2.isalnum()
print(a2)
str3 = '1234'
a3 = str3.isalnum()
print(a3)
str4 = 'abcd가나다라1234'
a4 = str4.isalnum()
print(a4)
str5 = 'abcd_1234' # 특수문자 -> False
a5 = str5.isalnum()
print(a5)
str6 = 'abcd 1234' # 공백 - False
a6 = str6.isalnum()
print(a6)
True
True
True
True
False
False
isdigit
- 문자열이 숫자로만 이루어뎠는지 확인하는 함수이다.
- 0 ~ 9까지의 숫자만 있다면 True, 그 외 하나라도 있다면 False를 반환한다.
# isdigit
str1 = '123456'
a1 = str1.isdigit()
print(a1)
str2 = 'alpha'
a2 = str2.isdigit()
print(a2)
True
False
isalpha
- 문자열이 문자로만 이루어졌는지 확인하는 함수이다.
- 문자만 있다면 True, 그 외 하나라도 있다면 False를 반환한다.
- 빈 문자열의 경우 False를 반환한다.
# isalpha
str1 = 'abcdef'
a1 = str1.isalpha()
print(a1)
str2 = '' # 문자가 없거나 텅 빈 문자열의 경우 False를 반환
a2 = str2.isalpha()
print(a2)
True
False
islower, isupper
- islower : 소문자로만 이루어졌는지 확인하는 함수.
- 모든 알파벳이 소문자일 때만 True 대문자가 포함된다면 False를 반환 (※한글, 특수 문자, 공백 등은 무시한다.)
- isupper : 문자로만 이루어졌는지 확인하는 함수.
- 모든 알파벳이 대문자일 때만 True 소문자가 포함된다면 False를 반환 (※한글, 특수 문자, 공백 등은 무시한다.)
- 알파벳 문자열이 최소 1개 이상 있어야 하며 만약 하나도 없다면 False를 반환한다.
#islower
str1 = 'abcdefg'
a1 = str1.islower()
print(a1)
#isupper
str2 = 'ABCDEFG'
a2 = str2.isupper()
print(a2)
str3 = '' # 텅 빈 문자열은 False를 반환
a3 = str3.isupper()
print(a3)
str4 = '1234' # 문자가 하나도 없다면 False를 반환
a4 = str3.islower()
print(a4)
True
True
False
False
lower, upper
- 모든 알파벳 문자를 소문자/대문자로 변경하는 함수이다.
- 숫자나 다른 특수 문자들은 영향을 받지 않는다.
str1 = 'ABcdEF'
# lower
str2 = str1.lower()
print(str2)
# upper
str3 = str1.upper()
print(str3)
abcdef
ABCDEF
replace
- 지정된 문자열 안에서 특정 부분을 찾아서 다른 문자열로 변경하는 함이다.
- 문자열.replace(바꿀_문자, 새_문자, 횟수(선택))
- 원본은 그대로, 대소문자만 구분한다.
# replace
# 지정된 문자열의 일부를 다른 문자열로 변경한다/
str1 = 'abcdefg'
# cde를 zzzz로 변경한다.
str2 = str1.replace('cde', 'zzzz')
print(str2)
str3 = 'abcdefcdekkk'
str4 = str3.replace('cde', 'zzzzz')
print(str4)
str5 = 'abcdefcdekkk'
# 3번째 숫자를 넣어주면 그 개수만큼 변경한다
str6 = str5.replace('cde', 'zzzzz', 5)
print(str6)
abzzzzfg
abzzzzzfzzzzzkkk
abzzzzzfzzzzzkkk
♣ 자료 출처
- [멋쟁이 사자처럼 부트캠프 데이터 분석5기]
댓글남기기