인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
기초 자료형(문자형)
- 기본 개념
# 문자열 선언 방식 str1 = "I am Python" str2 = 'Python' str3 = """How are you?""" str4 = '''Thank you!''' print(type(str1)) # 결과 : <class 'str'> print(type(str2)) # 결과 : <class 'str'> print(type(str3)) # 결과 : <class 'str'> print(type(str4)) # 결과 : <class 'str'> print(len(str1)) # 결과 : 11 print(len(str2)) # 결과 : 6 print(len(str3)) # 결과 : 12 print(len(str4)) # 결과 : 10 # len( )은 공백을 포함한 문자열의 길이를 알려주는 함수이다. # 빈 문자열 선언 방식 str1_t1 = '' str2_t2 = str() print(type(str1_t1), len(str1_t1)) # 결과 : <class 'str'> 0 print(type(str2_t2), len(str2_t2)) # 결과 : <class 'str'> 0
- 응용 개념
# 이스케이프 문자 사용 예시 """ 참고 : Escape 코드 \n : 개행 \t : 탭 \\ : 문자 \' : 문자 \" : 문자 \000 : 널 문자 ... """ print("I'm Boy") # 결과 : I'm Boy print('I\'m Boy') # 결과 : I'm Boy # \뒤에 있는 특수기호(')는 일반 문자형으로 출력된다. print('I\\m Boy') # 결과 : I\m Boy # 동일한 원리 print('a \t b') # 결과 : a b # a와 b사이에 tab키를 누른 것과 같은 공간이 생긴다. print('a \n b') # 결과 : # a # b # a와 b사이에서 줄바꿈이 된다. print('a \"\" b') # 결과 : a "" b # 앞선 예시와 동일한 원리 escape_str1 = "Do you have a \"retro games\"?" escape_str2 = 'What\'s on TV?' print(escape_str1) # 결과 : Do you have a "retro games"? print(escape_str2) # 결과 : What's on TV? t_s1 = "Click \t Start!" print(t_s1) # 결과 : Click Start! t_s2 = "New Line \n Check!" print(t_s2) # 결과 : # New Line # Check! # Row String 사용 예시 raw_s1 = r'D:\python\test' print(raw_s1) # 결과 : D:\python\test raw_s2 = r'D:\tpython\test' print(raw_s2) # 결과 : D:\tpython\test # Row String의 형식은 문자열을 감싸는 '' 앞에 r을 붙여준다. # Row String을 사용하면 이스케이프 문자 기능이 적용되지 않고, # 그대로 문자열로 출력된다. # 멀티라인 입력 방법(변수를 멀티라인으로 선언하는 방법) multi_str =""" String Multi line Test """ print(multi_str) # 결과 : # String # Multi line # Test multi_str2 =''' String Multi line Test ''' print(multi_str2) # 결과 : # String # Multi line # Test # """ """와 ''' ''' 모두 멀티라인 입력에 사용할 수 있다. multi_str3 =\ """ String Multi line Test """ print(multi_str3) # 결과 : # String # Multi line # Test # 멀티라인 입력 시 """를 줄바꿈 하려면, = 뒤에 반드시 \를 쓰고 줄바꿈을 해야한다. multi_str4 =\ ''' String Multi line Test ''' print(multi_str4) # 결과 : # String # Multi line # Test # 문자열의 연산(+, *) str_o1 = "Python" str_o2 = "Apple" str_o3 = "How are you doing" str_o4 = "Seoul Deajeon Busan Jinju" print(str_o1 * 3) # 결과 : PythonPythonPython # 문자열에 곱하기 연산을 사용하면 해당 문자열을 반복한다. print(str_o1 + str_o2) # 결과 : PythonApple # 문자열과 문자열의 합은 두 문자열을 합쳐준다. # in 연산자 str_o1 = "Python" str_o2 = "Apple" str_o3 = "How are you doing" str_o4 = "Seoul Deajeon Busan Jinju" print('y' in str_o1) # 결과 : True # y 알파벳이 str_o1 변수 안에 존재하는지를 물어보는 의미이다. # in 연산자는 특정 글자가 해당 문자열 안에 존재하는지를 알려주는 연산자이다. # 만약, 존재한다면 True 값을 출력하고 존재하지 않으면 False 값을 출력한다. # 아래의 결과는 동일한 원리가 적용된다.(단, 대소문자는 구별됨) # 자료형 중에 시퀀스형은 모두 in 연산자를 사용할 수 있다. print('n' in str_o1) # 결과 : True print('z' in str_o1) # 결과 : False print('P' not in str_o2) # 결과 : True (not in 연산자는 반대원리) # 문자열 형 변환 print(str(66), type(str(66))) # 결과 : 66 <class 'str'> # 출력된 값은 숫자형 66처럼 보이지만, type함수의 결과 값은 문자형 66이다.(형 변환) print(str(10.1), type(str(10.1))) # 결과 : 10.1 <class 'str'> # 위와 동일한 원리 print(str(True), type(str(True))) # 결과 : True <class 'str'> # 위와 동일한 원리 # 문자열 함수(upper, isalnum, startswith, count, endswith, isalpha 등) str_o1 = "Python" str_o2 = "Apple" str_o3 = "How are you doing" str_o4 = "Seoul Deajeon Busan Jinju" print("Capitalize: ", str_o1.capitalize()) # 결과 : Python # Capitalize( ) 함수는 문자열의 첫 글자를 대문자로 바꿔준다. print("endswith?: ", str_o2.endswith("o")) # 결과 : False print("endswith?: ", str_o2.endswith("e")) # 결과 : True # endswith( ) 함수는 해당 문자열의 마지막 글자가 무엇인지 확인해준다. # 만약, 마지막 글자가 찾는 글자와 같으면 True 값을, 다르면 False 값을 출력한다. print("replace", str_o1.replace("thon", 'Good')) # 결과 : replace PyGood # replace( ) 함수는 첫 번째 인자를 두 번째 인자로 바꿔준다. print("sorted: ", sorted(str_o1)) # 결과 : sorted: ['P', 'h', 'n', 'o', 't', 'y'] # sorted( ) 함수는 문자열을 받아서 정렬 기준에 맞게, # 해당 문자열을 리스트 형태로 반환해준다. print("split: ", str_o4.split(' ')) # 결과 : split: ['Seoul', 'Deajeon', 'Busan', 'Jinju'] # split( ) 함수는 특정 기호(인자에 들어가는 값)를 기준으로, # 해당 문자열을 리스트 형태로 분리해준다. # 반복(시퀀스형) im_str = "Good Boy!" print(dir(im_str)) # 결과 : __iter__ 등 for i in im_str: print(i) # 문자형은 시퀀스형이기 때문에 print(i) 결과처럼 # 해당 문자열을 슬라이싱 처리(자르는 기능)하여 결과 값으로 나타낼 수 있다. # 슬라이싱(문자열에서 원하는 글자만 잘라서 가져올 수 있는 기능) str_s1 = "Nice Python" print(len(str_s1)) # 결과 : 11 # 문자열의 인덱스 번호는 0부터 시작한다. print(str_s1[0:3]) # 결과 : Nic # str_s1[0:3]는 문자열의 인덱스 번호가 0인 글자부터, # 인덱스 번호가 3인 글자의 바로 앞 글자까지 출력하겠다는 의미이다. # 즉, 문자열의 인덱스 번호가 0,1,2인 글자만을 출력하겠다는 의미이다. print(str_s1[5:11]) # 결과 : Python # 위와 동일한 논리 print(str_s1[5:]) # 결과 : Python # 두 번째 인덱스 번호를 생략하면, 문자열의 인덱스 번호가 5인 글자부터 # 문자열의 마지막 글자까지 모두 가져오겠다는 의미이다.(str_s1[5:11]과 동일 기능) print(str_s1[:len(str_s1)]) # 결과 : Nice Python # 첫 번째 인덱스 번호를 생략하면, 문자열의 첫 글자부터 가져오겠다는 의미이며 # 두 번째 인덱스 번호 대신 len(str_s1)를 쓴 것은 str_s1[:11]과 동일한 의미이다. # 즉, len(str_s1) 값이 11이므로 문자열의 첫 글자부터 인덱스 번호가 10인 글자까지 # 모두 가져온다. # 만약, 문자열의 마지막 인덱스 번호를 모르는 경우라면 str_s1[5:]와 같이 # 문자열의 마지막 인덱스 번호를 생략하거나, 마지막 인덱스 번호 대신에 len(str_s1)를 # 사용하여 str_s1[:len(str_s1)와 같이 코드를 작성하면 된다. print(str_s1[1:9:2]) # 결과 : iePt # 문자열의 인덱스 번호가 1인 글자(i)부터, 인덱스 번호가 9인 글자의 바로 앞 글자(h)까지 # 가져오는 것을 의미하며 세 번째 숫자인 2는 글자를 한 칸씩 건너뛰어서 가져오라는 의미이다. print(str_s1[-5:]) # 결과 : ython # 만약, 인덱스 번호가 음수인 경우에는 문자열의 인덱스 번호 순서가 반대로 바뀌면서 # 문자열의 마지막 글자가 -1의 인덱스 번호를 부여받고, 뒤에서 앞으로 오면서 -2, -3으로 # 인덱스 번호를 할당 받는다. # s1 문자열의 인덱스 번호가 -5인 글자는 y이므로, y부터 마지막 글자까지 모두 가져온다. print(str_s1[1:-2]) # 결과 : ice Pyth # 문자열의 인덱스 번호가 1인 글자는 i이고, -2인 글자는 o이지만 # 두 번째 인덱스 번호의 바로 앞 글자(h)까지 가져오는 것이므로 # 결과 값은 i부터 h까지 출력되는 ice Pyth이 된다. print(str_s1[::2]) # 결과 : Nc yhn # 첫 번째, 두 번째 인덱스 번호를 모두 생략하면 처음부터 마지막 글자를 모두 가져오라는 # 의미이지만, 마지막 숫자 2가 있기 때문에 첫 글자부터 마지막 글자까지 한 칸씩 건너뛰며 # 결과 값을 출력한다.(마지막 숫자가 3이라면, 두 칸씩 건너뛰며 글자를 가져옴) print(str_s1[::-1]) # 결과 : nohtyP eciN # 첫 번째, 두 번째 인덱스 번호를 모두 생략했기 때문에, 처음부터 마지막 글자를 모두 # 가져오는 것이지만 마지막 숫자가 -1이므로 해당 문자열의 글자를 반대 순서로 가져오게 된다. # 아스키 코드(or 유니 코드) a = 'z' print(ord(a)) # 결과 : 122 # ord( ) 함수의 인자에 특정 문자를 넣으면 # 해당 문자의 아스키 코드가 결과 값으로 출력된다. # 여기서 122는 알파벳 z의 아스키 코드 값이고, 알파벳 z 대신 변수(a)를 넣은 것이다. print(chr(122)) # 결과 : z # 반대로 chr( ) 함수의 인자에 아스키 코드 값을 넣으면 # 아스키 코드 값에 대응되는 알파벳(문자)을 결과 값으로 출력한다. # 컴퓨터는 문자를 처리할 때, 아스키 코드를 통해 # 해당 문자를 인식하고 처리한다.(파이썬의 내부적으로 작동하는 매커니즘)
'Python' 카테고리의 다른 글
Python - 기초 자료형(튜플) (0) | 2021.10.13 |
---|---|
Python - 기초 자료형(리스트) (0) | 2021.10.13 |
Python - 기초 자료형(숫자형) (0) | 2021.10.11 |
Python - 변수 (0) | 2021.10.11 |
Python - print 사용법 (0) | 2021.10.08 |
댓글