[Python] 3. 복수의 데이터 다루기 (1)
[Python] 3. 복수의 데이터 다루기 (1)
1. 문자열 인덱싱, 슬라이싱, 포매팅
문자열 Indexing
- 문자를 하나씩 추출
# index
# 01234
print("index"[0]) # 인덱스는 0번 부터 시작
print("index"[2])
print("index"[3])
print("index"[4])
# Result
# i
# n
# d
# e
# x
# index
# -5-4-3-2-1
print("index"[-5]) # 인덱스는 제일 낮은숫자부터 시작
print("index"[-4])
print("index"[-3])
print("index"[-2])
print("index"[-1])
# Result
# i
# n
# d
# e
# x
# String index
str_ = "String idex"
print(str_[0])
print(str_[1])
print(str_[2])
print(str_[3])
print(str_[4])
print(str_[5])
print(str_[6])
print(str_[7])
print(str_[8])
print(str_[9])
print(str_[10])
# 문자열의 index를 넘어가면
# ex) print(str_[22]) → IndexError: string index out of range
# Result
# S
# t
# r
# i
# n
# g
# i
# d
# e
# x
문자열 Slicing
- 문자열에서 범위를 지정해 잘라낸 범위 내에 있는 문자를 추출
str_slice = "0123456789"
print(str_slice[0:7]) # 0123456789에서 0부터 ~ 7번 전까지 출력
print(str_slice[0:]) # 0부터 ~ 마지막까지 출력
print(str_slice[:10]) # 처음부터 ~ 10번 전까지 출력
print(str_slice[:]) # 처음부터 ~ 끝까지 출력
print(str_slice[-8:-1]) # -1이 "9"가 됨으로 8번 아래로 -8까지 출력
print(str_slice[0:10:2]) # Step 이용 (0번부터 ~ 10번 전까지 2개씩 끊어서 출력)
print(str_slice[::-3]) # Step 이용 (체일 뒤에서 부터 3개씩 끊어서 출력)
# Result
# 0123456
# 0123456789
# 0123456789
# 0123456789
# 2345678
# 02468
# 9630
str_slice = "Python"
print(str_slice[0:]+str_slice[::-1])
print(str_slice[1:5]+str_slice[0]+str_slice[5])
# result
# PythonnohtyP
# ythoPn
문자열 Formating
-Percent Sign(%)
weather = "맑음"
temperature = 20
print("오늘의 날씨는", weather, "기온은", temperature,"도 입니다.")
print("오늘의 날씨는 %s 기온은 %d도 입니다."%(weather, temperature))
# result
# 오늘의 날씨는 맑음 기온은 20 도 입니다.
# 오늘의 날씨는 맑음 기온은 20도 입니다.
-Formating
weather = "맑음"
temperature = 20
chance_shower = 33.5
print("오늘의 날씨는 %s 기온은 %d도 비가 내릴 확률은 %d%%입니다"%(weather, temperature, chance_shower)) # 비효율적
print("오늘의 날씨는 {} 기온은 {}도 비가 내릴 확률은 {}%입니다.".format(weather, temperature, chance_shower)) # 자료형을 명확히 해주지 않아도 원하는 결과물 도출
print("오늘의 날씨는 {0} 기온은 {2}도 비가 내릴 확률은 {1}%입니다.".format(weather, temperature, chance_shower))
# ↑ {} 안에 순서 지정해서 요소들을 출력 가능, {}의 숫자는 반드시 요소의 숫자보다 작거나 같아야 한다
# result
# 오늘의 날씨는 맑음 기온은 20도 비가 내릴 확률은 33%입니다
# 오늘의 날씨는 맑음 기온은 20도 비가 내릴 확률은 33.5%입니다.
# 오늘의 날씨는 맑음 기온은 33.5도 비가 내릴 확률은 20%입니다
weather = "맑음"
temperature = 20
chance_shower = 33.5
print("{:10}, {:10}".format(weather, temperature)) # 문자 - 기본적으로 왼쪽 정렬 // 숫자 - 오른쪽 정렬
# result
# 맑음 , 20
print("{0:10s}, {1:d}, {1:f}, {1:o}, {1:x}".format(weather, temperature))
# 문자의 타입:s // 숫자의 타입: d = 정수형, f = 실수형, o = 8진수 , x = 16진수
# result
# 맑음 , 20, 20.000000, 24, 14
-정렬 방식 변경
left = "left"
right = "right"
middle = "middle"
print("({:<10s}), ({:^10s}), ({:>10s})".format(left, middle, right))
# < : 왼쪽 정렬 // ^ : 가운데 정렬 // > : 오른쪽 정렬 // 기호를 이용해 정렬 방식 변경 가능
# result
# (left ), ( middle ), ( right)
print("({:!<10s}), ({:@^10s}), ({:#>10s})".format(left, middle, right))
# 공백에 체울 문자를 넣어 공백을 문자로 체울 수 있다.
# result
# (left!!!!!!), (@@middle@@), (#####right)
print("({:!<10.4s}), ({:@^10.2s}), ({:#>10.3s})".format(left, middle, right))
# 뒤에 .숫자를 적으면 지정된 만큼의 문자열만 출력된다.
# reult (빈칸은 공백 혹은 지정한 문자로 체워져서 출력된다.)
# (left!!!!!!), (@@@@mi@@@@), (#######rig)
-f-string
# f-string은 (Python 3.6 이상 version에서 사용 가능)
weather = "맑음"
temperature = 20
print(f"오늘의 날씨는 {weather}이며, 기온은 {temperature}도 입니다.")
# 출력할 문구 앞에 f 를 입력 (소문자 권장)
# result
# 오늘의 날씨는 맑음이며, 기온은 20도 입니다.
print(f"2곱하기 30의 결과 값 = {2*30}")
# 수식도 사용 가능
# result
# 2곱하기 30의 결과 값 = 60
2. 문자열 메서드
- 내장함수 : print( )
괄호 안에 인자 를 넣어서 사용
- 메서드 : upper( )
.(참조연산자) 를 이용해 특정한 데이터를 참조해서 사용
파이썬의 내장함수 (len)
text = "www.GOOGLE.com"
print(len(text)) # len(length) - 요소의 갯수
# result
# 14
문자열 메서드
-text.capitalize( )
text = "www.GOOGLE.com"
# capitalize - 문자열에서 첫 글자를 대문자로 변경 해주는 메서드
txt_capitalize = text.capitalize()
print(txt_capitalize)
# result
# Www.google.com
-text.upper( ), text.lower( )
text = "www.GOOGLE.com"
text.upper() # 문자열 전체를 대문자로 변경
text.lower() # 문자열 전체를 소문자로 변경
txt_upper = text.upper()
txt_lower = text.lower()
print(txt_upper)
print(txt_lower)
# result
# WWW.GOOGLE.COM
# www.google.com
text 검색 메서드
-text.count
from itertools import count
text = "www.GOOGLE.com"
text.count('G') # 찾고싶은 문자나 문자열의 갯수를 출력
g_cnt = text.count('G')
print(g_cnt)
# result
# 2
g_cnt2 = text.count('GO')
print(g_cnt2)
# result
# 1
-text.find
- 찾고자 하는 값이 없을 때 -1로 반환된다.
text = "www.GOOGLE.com"
g_find = text.find('com') # 찾고싶은 문자나 문자열 요소의 위치를 찾아줌
print(g_find)
# result
# 11
g_find2 = text.find('G', 5) # 5번째 인덱스 이후의 G를 찾으라는 명령
print(g_find2)
# result
# 7
-text.index( )
- 찾고자 하는 값이 없을 때 ValueError: substring not found
text = "www.GOOGLE.com"
g_idx = text.index('G') # 찾는 문자의 인덱스를 반환
print(g_idx)
# result
# 4
#index 나 find 메서드앞에 r을 붙이면 뒤에서부터 검색하여 반환한다.
g_idx2 = text.rindex('G')
print(g_idx2)
# result
# 7
-text.replace( )
- 문자열 치환
text = "www.GOOGLE.com"
text_naver = text.replace("GOOGLE", "NAVER")
print(text_naver)
#result
#www.NAVER.com
-text.split( )
- 넣어주는 인자값에 따라 문자열을 분리해준다.
text = "www.GOOGLE.com"
print(text.split()) # 문자열을 공백으로 분리
# result
# ['www.GOOGLE.com']
print(text.split('.')) # .으로 된 부분을 기준으로 , 로 구분해서 출력
# result
# ['www', 'GOOGLE', 'com']
print(text.split('o')) # o를 기준으로 ,로 구분해서 출력
# resuly
# ['www.GOOGLE.c', 'm']
-text.strip()
- 공백을 없애주는 메서드
text = " www.GOOGLE.com "
print(text) # 그냥 출력 했을때
# result
# www.GOOGLE.com
# strip 메서드는 문자열을 기준으로 좌 우의 공백을 없애줌.
# strip 메서드로 문자 사이 사이의 공백을 없앨 순 없음.
stp = text.strip() # 공백을 없애주는 strip 메서드
print(stp)
# result
# www.GOOGLE.com