Chapter 1-4. 파이썬의 기본 : 문자열 메서드
카테고리: Python-basic
태그: python Programming
인프런에 있는 남박사님의 강의 남박사의 파이썬 기초부터 실전 100% 활용 를 듣고 정리한 필기입니다. 😀
문자열 메서드
- 문자열에는 특정 문자열 찾기, 치환하기, 공백 지우기 등 여러 유용한 메서드들이 있습니다.
메서드는 어떤 행위를 해서 결과를 알려주는 목적으로 기능을 하는 놈입니다. C언어의 함수랑 동일한 기능을 합니다.
👱문자열에서 특정 문자열을 찾는데 사용하는 메서드
str.find()와str.index()는 사용법도 같고, 문자열을 찾았을 때 문자열 인덱스를 리턴하는 값도 동일합니다. 다른점은 문자열을 찾지 못했을 때 입니다.str.find()는 -1을 리턴하는것에 반해str.index()는 에러를 표시합니다.
test = "abcd 가나다라마바사"
print(test.find("가"))
print(test.index("가"))
print(test.find("zz"))
print(test.index("zz"))
💎출력💎
5
5
-1
Traceback (most recent call last):
File "c:\Users\hwyoo\Documents\int.py", line 7, in <module>
print(test.index("zz"))
ValueError: substring not found
str.find()메소드는 찾은 문자열의 인덱스를 리턴하니까문자열 슬라이싱에 응용할 수 있습니다. 가령path = "C:\\test\\abcd\\abcde.jpg"의 경로를 가진 문자열이 있는데 경로명은 지우고 파일명만 가져오고 싶다면str.rfind()메서드와문자열 슬라이싱조합을 이용하면 됩니다.
path = "C:\\test\\abcd\\abcde.jpg"
print(path[path.rfind("\\") + 1:])
💎출력💎
abcde.jpg
str.rfind("\\")+1- 찾는 방향이 문자열을 오른쪽 부터 찾아서 인덱스 값을 리턴하는 메소드입니다. 여기서 +1을 해준 이유는 우리가 원하는 파일명만 출력할 수 없기 때문입니다. +1 없이 사용한다면
"\abcde.jpg"형태로 리턴합니다.파일명은 오른쪽에 위치하므로
str.rfind()와는 찰떡 궁합입니다.
- 찾는 방향이 문자열을 오른쪽 부터 찾아서 인덱스 값을 리턴하는 메소드입니다. 여기서 +1을 해준 이유는 우리가 원하는 파일명만 출력할 수 없기 때문입니다. +1 없이 사용한다면
특정 문자열을 기준으로 문자열을 잘라서 리스트 형태로 저장하는 메서드
str.split()메서드를 사용하면 지정한 문자열을 기준으로 문자열을 잘라서 리스트 형태로 저장합니다.
path = "C:\\test\\abcd\\abcde.jpg"
result = path.split("\\")
print(result)
print(result[0])
💎출력💎
['C:', 'test', 'abcd', 'abcde.jpg']
C:
str.split("\\")\\을 기준으로 4개의 문자열 리스트가 만들어졌습니다. 이 잘라진 문자열 리스트에 접근하기 위해서는 문자열 인덱싱에서 표현했던것과 동일하게 하면 됩니다. 소스에서와 같이 0번째 인덱싱하려면result[0]으로 표현합니다.남박사님이 리스트는 아직 배우지 않았기 때문에 여기서는 간단하게만 설명한다고 합니다.
👱문자열을 치환하는 메서드
str.find()가 문자열을 찾는 기능이였다면str.replace()는 찾은 문자열을 지정한 문자열로 치환(바꿔주는)하는 기능입니다.MS OFFICE의
찾아 바꾸기기능이라고 이해하면 편합니다.
a = "안녕"
result = a.replace("안녕","헬로")
print(result)
💎출력💎
헬로
str.replace("안녕","헬로)- “안녕” 이라는 문자열을 찾아서 “헬로”로 변경하였습니다.
C#에서는 정규 표현식 써서 바꿨었는데 파이썬은 엄청 쉽게 되네~
- “안녕” 이라는 문자열을 찾아서 “헬로”로 변경하였습니다.
👱문자열의 공백을 지워주는 메서드
- 공백은 눈에 보이지 않아서 문자열 처리를 할 때 의도치 않은 결과를 낳는 경우가 비일비재합니다. 이때 사용하는 것이
str.strip()을 사용하면 문자열 기준으로 앞뒤 공백을 지워줍니다.가운데 공백은 못 지우네~
a = " 안 녕 "
result = a.strip()
print(a)
print(result)
💎출력💎
안 녕
안 녕
대문자와 소문자로 바꿔주는 메서드
"AbCd"라는 대소문자가 섞여 있는 문자열이 있다고 합시다. 이것을 모두 대문자 또는 소문자로 바꿔주는 메서드가 있습니다. 대문자로 바꿀려면str.upper()를 사용하면 되고 소문자로 바꿀려면str.lower()를 사용하면 됩니다.당연하겠지만…한글은 대소문자가 없으니 무의미한 짓이다!!!!
a = "AbCd"
print(a.upper())
print(a.lower())
💎출력💎
ABCD
abcd
대소문자 구분 없이 입력되는 시스템을 만들 때 유용할 것 같은 느낌적인 느낌이 있다!
👱문자열 길이 및 특정 문자열 개수를 세어주는 메서드
"aaaabbbbccccdddd"라는 문자열에서"a"의 개수를 알고 싶다면str.count()를 사용하면 됩니다.str의 전체 길이가 알고 있다면str.len()메소드를 사용합니다.
a = "aaaabbbbccccdddd"
print(a.count("a"))
print(len(a))
💎출력💎
4
16
어떤 데이터 타입인지 확인하는 메서드
- 사용자에게 문자열을 입력 받았을 때, 이게 숫자인지, 알파벳인지 검사해야 될 때 사용하는 메소드는 다음과 같습니다.
str.isalpha()bool타입으로 알파벳이면True, 아니면False를 리턴합니다.
str.islower()bool타입으로 소문자면True, 아니면False를 리턴합니다.
str.isupper()bool타입으로 대문자면True, 아니면False를 리턴합니다.
str.isdecimal()bool타입으로 10진수이면True, 아니면False를 리턴합니다.
str.isdigit()bool타입으로 아라비아 숫자이면True, 아니면False를 리턴합니다.
str.isnumeric()bool타입으로 로마 숫자, 아라비아 숫자이든 숫자 자체인지 판단하는 메서드로 숫자이면True, 아니면False를 리턴합니다.iii같은 로마 숫자,½같은 숫자관련 특수문자 등도True로 반환합니다. 신기신기!
👱클래스 구조를 확인하는 메서드(str 메서드 아님)
- 지금까지 문자열 관련 메서드를 살펴보았는데 소개한 것 이외에도 다양한 메서드가 존재합니다. 이럴경우 구글에서 api문서를 찾아보거나
dir()메서드로 클래스의 구조를 살펴볼 수 있습니다. 사용 방법은()안에 살펴볼 클래스명을 입력하면 됩니다. 이때까지 사용했던 str 클래스를 볼려면dir(str)을 입력합니다.
a = "abcd"
print(type(a))
print(dir(str))
💎출력💎
<class 'str'>
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
type(a)- a라는 변수의 타입을 먼저 조사합니다. 여기서는
str이라는 클래스 타입이라고 출력되었습니다.
- a라는 변수의 타입을 먼저 조사합니다. 여기서는
dir(str)- str 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던,
find(),count()등 이 보입니다.
- str 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던,
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기