문제에 어떤 메서드를 사용하라는 것이 나와있어서 어렵지 않게 풀 수 있었지만 없었더라면 기억이 안났을 것 같다,,,

041 ~ 050
.answer {margin-top: 10px;margin-bottom: 50px;padding-top: 10px;border-top: 3px solid LightGray;bo…
wikidocs.net
# 2024 02 18 SUN
print("-"*80)
# 041
# 소문자 문자열을 대문자 문자열로 변경
ticker1 = "btc_krw"
ticker2 = ticker1.upper()
print(ticker1)
print(ticker2)
# 042 대문자 문자열을 소문자 문자열로 변경
ticker3 = "BTC_KRW"
ticker4 = ticker3.lower()
print(ticker3)
print(ticker4)
# 043
# 문자열 'hello'를 'Hello'로 변경
strr1 = "hello"
strr2 = strr1.capitalize()
print(strr1, strr2)
# 044
# 파일이름이 문자열로 저장되어 있을 때 endswith 메서드를 사용해 파일 이름이 'xlsx'로 끝나는지 확인
file_name1 = "보고서.xlsx"
file_check1 = file_name1.endswith("xlsx")
print(file_check1)
# 045
# 파일이름이 문자열로 저장되어 있을 때 endswith 메서드를 사용해 파일 이름이 'xlsx' 또는 'xls'로 끝나는지 확인
file_name2 = "보고서.xlsx"
file_check2 = file_name2.endswith(("xlsx", "xls"))
print(file_check2)
# 046
# 파일이름이 문자열로 저장되어 있을때 startswith 메서드를 사용해서 파일 이름이 '2020'으로 시작하는 지 확인
file_name3 = "2020_보고서.xlsx"
file_check3 = file_name3.startswith("2020")
print(file_check3)
# 047
# 문자열을 공백을 기준으로 나누기
a1 = "hello world"
a2 = a1.split(" ")
print(a2)
# 048
# 문자열을 '_'을 기준으로 나누기
ticker5 = "btc_krw"
ticker6 = ticker5.split("_")
print(ticker6)
# 049
# 날짜를 표현하는 문자열을 연도, 월, 일로 나누기
date1 = "2020-05-01"
date2 = date1.split("-")
print(date2)
print("year : {}".format(date2[0]))
print("month : {}".format(date2[1]))
print("day : {}".format(date2[2]))
# 050
# 문자열의 오른쪽 공백을 제거
data3 = "039490 "
data4 = data3.rstrip()
print(data3, data4)

내가 몰랐던 문법
1. upper(), lower() 메서드
upper(), lower() 메서드 각각 문자열을 대문자로 변환하거나 소문자로 변환하는 데 사용된다.
upper() : 문자열의 '모든' 문자를 대문자로 변환
lower() : 문자열의 '모든' 문자를 소문자로 변환
주의할 점은 파이썬 문자열은 불변하므로 원본 문자열은 유지되고 변경된 새로운 문자열 객체가반환된다는 것이다. 반환된 새로운 객체를 새로운 변수에 할당하면 된다.
2. capitalize() 메서드
capitalize() 메서드는 문자열의 첫 번째 문자만을 대문자로 변환하고, 나머지 문자는 모두 소문자로 변환하는 데 사용된다.
3. endswith(), startswith() 메서드
endswith(), startswith() 메서드는 각각 문자열이 특정 접미사로 끝나는지(end) 혹은 특정 접두사로 시작하는지(start)를 확인하는 데 사용된다.
endswith() : 문자열이 지정된 접미사로 끝나는 지를 확인한다. 특정 접미사로 끝난다면 'True', 그렇지 않다면 'False'를 반환한다.
startswith() : 문자열이 지정된 접두사로 시작하는 지를 확인한다. 특정 접두사로 시작한다면 'True', 그렇지 않다면 'False'를 반환한다.
기본구문
- endswith(suffix[, start[, end]])
- startswith(prefix[, start[, end]])
suffix 또는 prefix: 확인할 접미사 또는 접두사로 사용할 문자열
start (선택 사항): 확인할 문자열의 시작 인덱스, 기본값은 0이며, 음수 값도 가능
end (선택 사항): 확인할 문자열의 끝 인덱스, 기본값은 문자열의 길이이며, 음수 값도 가능
주의할 점은 위 메서드는 여러 개의 접미사 및 접두사를 지정할 수 있다. 이 경우에는 튜플(tuple)의 형태로 여러 개의 접미사를 전달한다. 따라서 45번 문제에서
file_name = "보고서.xlsx"
file_name.endswith(("xlsx", "xls"))
'xlsx' 또는 'xls'로 끝나는 지 확인하고 싶으면 ("xlsx", "xls") 이렇게 묶어서 suffix 자리에 넣어야 한다. 나는 처음에 묶지 않고 ("xlsx", "xls") 작성하였다가 "xls" 자리가 시작 인덱스를 나타내는 자리로 넘어가 타입에러가 났었다.(왜냐하면 시작 인덱스자리에는 숫자형태가 와야 하기 때문이다)
4. split() 메서드 (복습)
a1 = "hello world"
a2 = a.split()
() 안에 아무것도 작성하지 않으면 자동적으로 공백을 기준으로 분류해준다.
5-1. rstrip() 메서드
rstrip() 메서드를 사용하면 '오른쪽' 공백이 제거된 새로운 문자열 객체가 반한된다. 반면 lstrip() 메서드를 사용하면 '왼쪽' 공백이 제거된 새로운 문자열 객체가 반환된다.
data = "039490 "
data = data.rstrip()

5-2. 의문점
" rstrip() 메서드를 사용하면 오른쪽 공백이 제거된 새로운 문자열 객체가 반환됩니다. 그 값을 data라는 변수가 새로 바인딩합니다. 기존의 공백이 포함된 문자열은 메모리에서 자동으로 삭제됩니다. "
위의 코드와 그림을 글자로 이런 식으로 설명하였는 데 '기존의 공백이 포함된 문자열은 메모리에서 자동으로 삭제됩니다' 이 문장이 이해가 되지 않아서 gpt를 사용해보니 "따라서 문자열이 메모리에서 자동으로 삭제되는 것은 아니며, 기존의 문자열은 변경되지 않습니다. 대신에 strip() 메서드가 반환하는 새로운 문자열을 사용하게 됩니다." 이렇게 설명을 해주었다. 자동으로 삭제된다고 설명한 이유가 뭘까? 아 rstrip() 메서드 자체는 새로운 문자열을 사용하게 되는 것은 맞는데 변수의 값을 덮어씌우는 과정에서 이전 값이 메모리에서 사라지는 것을 의미하는 것이었다! data 라는변수에 새로운 값을 할당하면, 이전 값은 덮어씌어지고 새로운 값으로 대체된다. 이전 값은 더 이상 참조되지 않으며, 이전 값이 저장되어 있던메모리 공간은 더 이상 사용되지 않게 되어 자동으로 메모리에서 해제될 수 있다. 따라서 "자동으로 삭제된다" 라는 의미는 파이썬의 가비지 컬렉터가 이전 값이 더 이상 사용되지 않음을 감지하고 해당 값이 차지하고 있던 메모리를 해제한다는 것을 의미한다.

'PYTHON > 초보자를 위한 파이썬 300제' 카테고리의 다른 글
| 04. 파이썬 리스트 061 ~ 070 (0) | 2024.02.20 |
|---|---|
| 04. 파이썬 리스트 051 ~ 060 (0) | 2024.02.19 |
| 03. 파이썬 문자열 031 ~ 040 (0) | 2024.02.17 |
| 03. 파이썬 문자열 021 ~ 030 (1) | 2024.02.16 |
| 02. 파이썬 변수 011 ~ 020 (0) | 2024.02.15 |