내일배움캠프/Python

[Python]문자열 다루기_메소드, 인덱싱, 슬라이싱, 리스트, 딕셔너리

dydatablog 2024. 11. 19. 17:14
728x90

Python데이터 종류

  • 숫자형 : 정수, 소수, 0 등,,
  • 불(Boolean) 자료형 : 참/거짓 형태. 보통 아래처럼 비교연산자의 결과로 나타내기 위해 쓰인다.
4 > 2      # True  크다
5 < 1      # False 작다
6 >= 5     # True  크거나 같다
4 <= 4     # True  작거나 같다
3 == 5     # False 같다
4 != 7     # True  같지 않다
  • 문자형 : 반드시 ""(큰 따옴표) 또는 ''(작은 따옴표)로 묶어서 사용

문자열 연산

#문자열 연산
first_name = "Harry"
last_name = "Potter"

first_name + last_name  # HarryPotter
first_name + " " + last_name  # Harry Potter

a = "3"
b = "5"
a + b    # 35

* 문자열과 정수는 더할 수 없다

 

#문자열 길이 구하기
print(len("abcde"))           # 5
print(len("Hello, Sparta!"))  # 14
print(len("안녕하세요."))      # 6

메소드(method) : 자료형 뒤에 '.'을 붙이고 쓰는 내장 함수

  • 모든 알파벳을 대문자/소문자로 바꾸기
sentence = 'Python is FUN!'

sentence.upper()  # PYTHON IS FUN!
sentence.lower()  # python is fun!

 

  • 특정 문자를 기준으로 문자열을 나누기
# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'

result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :))

result[0] # test (리스트의 첫번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소

result2 = result[1].split('.') # ['gmail','com']

result2[0] # gmail -> 우리가 알고 싶었던 것
result2[1] # com

# 한 줄로 한 번에!
myemail.split('@')[1].split('.')[0]

 

  • 특정 문자를 다른 문자로 바꾸기
txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'

 


인덱싱 : 문자열에서 특정 글자를 불러 올 때 몇 번째인지 '인덱스'를 넣어서 불러온다.

f="abcdefghijklmnopqrstuvwxyz"
f[1]   # b 
# 파이썬은 숫자를 0부터 셉니다. a=0번째, b=1번째이므로 결과 값은 'b'

 


슬라이싱: 문자열의 일부를 잘라내어 가져온다.

f[4:15]  # efghijklmno           f[4]부터 f[15] 전까지, 총 15-4=11개!

f[8:]    # ijklmnopqrstuvwxyz    f[8]부터 끝까지, 앞의 8개 빼고!
f[:7]    # abcdefg               시작부터 f[7] 전까지, 앞의 7개!

f[:]     # abcdefghijklmnopqrstuvwxyz  처음부터 끝까지

 

특정 문자를 기준으로 자르고 싶을 때! split('문자열')을 활용한다.

myemail = 'abc@sparta.co'

domain = myemail.split('@')[1].split('.')[0]
print(domain)

 


리스트 : 순서가 있는, 다른 자료형들의 모임

a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]

#리스트의 길이도 len()을 사용하여 구할 수 있음
a = [1, 5, 2]
print(len(a))   # 3

b = [1, 3, [2, 0], 1]
print(len(b))   # 4

 

리스트릐 인덱싱과 슬라이싱

a = [1, 3, 2, 4]
print(a[3])  # 4
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)

 

리스트의 요소가 리스트인 경우엔 중첩해서 불러오기

a = [1, 2, [2, 3], 0]
print(a[2])      # [2, 3]
print(a[2][0])   # 2

 

덧붙이기

a = [1, 2, 3]
a.append(5)
print(a)     # [1, 2, 3, 5]

a.append([1, 2])
print(a)     # [1, 2, 3, 5, [1, 2]]


# 더하기 연산과 비교!
a += [2, 7]
print(a)     # [1, 2, 3, 5, [1, 2], 2, 7]
 
 
정렬하기
a = [2, 5, 3]
a.sort()
print(a)   # [2, 3, 5]
a.sort(reverse=True)
print(a)   # [5, 3, 2]
 

 

리스트 안의 값 찾기

a = [2, 1, 4, "2", 6]
print(1 in a)      # True
print("1" in a)    # False
print(0 not in a)  # True

딕셔너리(Dictionary) : Key와 Value로 이루어진 자료의 모임

 

person = {"name":"Bob", "age": 21}
print(person["name"])
#'name', 'age'는 Key,'Bob','21'는 Value

 

딕셔너리의 요소에는 순서가 없기 때문에 인덱싱을 사용할 수 없다.

person = {"name":"Bob", "age": 21}
print(person[0])   # 0이라는 key가 없으므로 KeyError 발생!

 

딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있다.

person = {"name":"Bob", "age": 21}

person["name"] = "Robert" #name값을 Robert로 업데이트
print(person)  # {'name': 'Robert', 'age': 21}

person["height"] = 174.8 #person 딕셔너리에 height 값을 추가
print(person)  # {'name': 'Robert', 'age': 21, 'height': 174.8}

 

딕셔너리의 밸류로는 아무 자료형이나 쓸 수 있다.

person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}} #딕셔너리 안에 딕셔너리가 들어간 모습
print(person["scores"])             # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"])  # 92

 

딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때는 in 을 사용한다.

person = {"name":"Bob", "age": 21}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True

 

 

[실습]smith의 과학 점수를 구하기

people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]
print(people[2]['score']['science']) #90

 

728x90

'내일배움캠프 > Python' 카테고리의 다른 글

[Python]map, filter, lambda  (0) 2024.11.22
[Python]삼항연산자  (0) 2024.11.22
[Python]튜플, 집합, f-string, try except  (0) 2024.11.22
[Python]함수  (0) 2024.11.21
[Python] 조건문if, 반복문for  (0) 2024.11.21