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 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던,
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기