● 문자열 기초
a = "aa"
b = 'aa'
# 작은 따옴표 또는 큰 따옴표, 둘 다 같아요!
a = 1
b = "a"
c = a
print(a,b,c)
#1"a"1
- 따옴표로 감싸지 않으면 변수 이름을 뜻하므로 꼭 구분해서 써야 한다.
● 문자열 연산
- 문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환한다.
first_name = "Harry"
last_name = "Potter"
first_name + last_name # 출력하면 HarryPorter
first_name + " " +last_name # Harry Potter
a = "3"
b = "5"
a+b
● 문자열과 정수를 더하면 에러가 난다
a = "3"
a+5 #문자열과 숫자형은 더할 수 없어서 에러!
●문자열의 길이는 len() 함수를 써서 구할 수 있다.
print(len("abcde")) # 5
print(len("Hello, Sparta!")) # 14
print(len("안녕하세요.")) # 6
● 그 외에 다양한 기능
-> 특정 자료형 뒤에 " . " 을 붙이고 쓰는 내장 함수 들을 '메소드(method)' 라고 한다.
- 모든 알파벳을 대문자/소문자로 바꾸는 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] # gmail 출력!
● 특정 문자를 다른 문자로 바꾸기
txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'
● 인덱싱과 슬라이싱
- 문자열은 '문자들의 모임' , 따라서 그 일부를 따로 떼어 부르는 방법은 한 글자씩 부를 때는 몇 번째인지
'인덱스'를 넣어 불러서 인덱싱이라고 한다.
f="abcdefghijklmnopqrstuvwxyz"
f[1] # b 파이썬은 숫자를 0부터 셉니다
- 문자열의 일부를 잘라낼 때는 슬라이싱
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
- 리스트의 더 많은 기능
- 덧붙이기 append()
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
● 딕셔너리 : key 와 value의 쌍으로 이루어진 자료의 모임
person = {"name":"Bob", "age": 21}
print(person["name"])
- 딕셔너리 만드는 방법
a = {"one":1, "two":2}
# 빈 딕셔너리 만들기
a = {}
a = dict()
- 딕셔너리의 요소에는 순서가 없기 때문에 인덱싱 사용불가
person = {"name":"Bob", "age": 21}
print(person[0]) # 0이라는 key가 없으므로 KeyError 발생!
- 딕셔너리의 값을 업데이트 하거나 새로운 쌍의 자료를 넣을 수 있다.
person = {"name":"Bob", "age": 21}
person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}
person["height"] = 174.8
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
● 리스트와 딕셔너리의 조합
- 딕셔너리는 리스트와 함께 쓰여 자료를 정리하는 데 쓰일 수 있다.
people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}]
# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'
person = {'name': 'john', 'age': 7}
people.append(person)
# people의 값은? [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}]
# people[2]['name']의 값은? 'john'
어렵지만 뭐라도 해보는게 낫다!!
'데이터분석 study > Python' 카테고리의 다른 글
TIL(Today I Learned) 24.07.04_Python_문자열, 변수의 자료형 (0) | 2024.07.04 |
---|---|
TIL(Today I Learned) 24.07.02 (0) | 2024.07.02 |
TIL(Today I Learned) 24.07.01 (0) | 2024.07.01 |
TIL(Today I Learned) 24.06.28 (0) | 2024.06.28 |
TIL(Today I Learned) 24.06.26 (0) | 2024.06.26 |