Chapter 1-4. 파이썬의 기본 : 문자열 메서드

Date:     Updated:

카테고리:

태그:

인프런에 있는 남박사님의 강의 남박사의 파이썬 기초부터 실전 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()와는 찰떡 궁합입니다.

특정 문자열을 기준으로 문자열을 잘라서 리스트 형태로 저장하는 메서드

  • 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이라는 클래스 타입이라고 출력되었습니다.
  • dir(str)
    • str 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던, find(), count()등 이 보입니다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Python-basic 카테고리 내 다른 글 보러가기

댓글 남기기