[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