Skip to main content

Command Palette

Search for a command to run...

[Python TIL] String 메소드

Updated
5 min readView as Markdown
K

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).

숫자와 특수 문자 검사

🔹 string.digits

  • 정의: 숫자 0부터 9까지의 문자열을 나타냄

  • : '0123456789'

  • 사용 목적: 문자열에 숫자가 포함되어 있는지를 검사할 때 유용함

  • 예시:

      import string
      print(string.digits)  # 출력: 0123456789
    

    위 코드에서:

      for digit in string.digits:
          if digit in name:
              return False
    

    name 문자열에 숫자가 하나라도 포함되어 있다면 False를 리턴함


🔹 string.punctuation

  • 정의: 모든 ASCII 특수문자를 문자열로 제공함

  • : '!"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~'`

  • 사용 목적: 문자열에 특수기호가 포함되어 있는지 검사할 때 유용함

  • 예시:

      import string
      print(string.punctuation)
    

    위 코드에서:

      for punc in string.punctuation:
          if punc in name:
              return False
    

    name 문자열에 특수문자가 하나라도 포함되어 있다면 False를 리턴함


요약 정리 ✍️

속성명설명예시
string.digits숫자 문자만 포함한 문자열'0123456789'
string.punctuation특수문자만 포함한 문자열'!"#$%&\'()*+,-./:;<=>?@[\\]^_{

이 두 가지는 문자열에서 허용되지 않는 문자(숫자나 특수기호 등)를 체크할 때 매우 유용하게 사용된다.


string 메소드 목록과 설명

def validate_email(email):

    # 주소가 문자열인지 확인합니다.
    if type(email) is not str:
        return False

    # 주소가 하나의 @을 포함하는지 확인합니다.
    if email.count('@') != 1:
        return False

    # 주소에서 도메인을 추출합니다.
    domain = email.split('@')[1]

    # 도메인이 하나 이상의 점을 포함하는지 확인합니다.
    if domain.count('.') != 1:
        return False

    # 도메인을 점 기준으로 쪼개고, 연속하는 점이 없는지 확인합니다.
    # 아래의 코드는 완성되어 있습니다. 코드를 이해해 보세요.
    parts = domain.split(".")
    for part in parts:
        if part == "":
            return False

    return True

1. type(email) is not str

  • 역할: email이 문자열(str) 타입인지 확인

  • 설명: 이메일이 문자열이 아니면 유효하지 않다고 판단

  • 예시:

      python복사편집type("hello@example.com")  # <class 'str'>
      type(1234)                 # <class 'int'>
    

2. string.count('@')

  • 역할: 문자열 내에 특정 문자(@)가 몇 번 나오는지 세기

  • 리턴값: 정수 (해당 문자의 등장 횟수)

  • 예시:

      "hello@example.com".count('@')  # 결과: 1
      "user@@example.com".count('@')  # 결과: 2
    
  • 코드 내 의미:

      if email.count('@') != 1:
          return False
    

    @가 하나만 있어야 이메일 형식으로 인정


3. string.split('@')

  • 역할: @ 기준으로 문자열을 나누어 리스트로 반환

  • 리턴값: 리스트

  • 예시:

      "hello@example.com".split('@')  # 결과: ['hello', 'example.com']
    
  • 코드 내 의미:

      domain = email.split('@')[1]
    

    @ 뒤쪽 문자열 (example.com)을 도메인으로 저장


4. string.count('.')

  • 역할: 도메인 내 .의 개수를 셈

  • 예시:

      "example.com".count('.')  # 결과: 1
      "co.uk".count('.')        # 결과: 1
      "example..com".count('.') # 결과: 2
    
  • 코드 내 의미:

      if domain.count('.') != 1:
          return False
    

    → 도메인에 점이 정확히 한 번만 있어야 한다는 제한이 있음


5. string.split('.')

  • 역할: 특정 구분자를 기준으로 문자열을 나누기. 예시에서는 . 기준으로 문자열을 나누어 리스트로 반환

    • 기본값은 공백 (' '), 연속된 공백도 하나로 처리됨
  • 예시:

      "example.com".split('.')       # 결과: ['example', 'com']
      "example..com".split('.')      # 결과: ['example', '', 'com']
    
      "apple banana cherry".split()   # ['apple', 'banana', 'cherry']
      "2023-03-28".split('-')         # ['2023', '03', '28']
    
  • 코드 내 의미:

      parts = domain.split(".")
      for part in parts:
          if part == "":
              return False
    

    → 도메인의 각 부분이 비어있으면(즉, 연속된 점이 있으면) 유효하지 않다고 판단

6. string.startswith()

  • 역할: 특정 문자열로 시작하는지 확인
text.startswith(prefix)
  • 문자열이 prefix로 시작하면 True, 아니면 False를 반환한다.

  • 대소문자를 구분한다.

📌 예시:

"hello world".startswith("hello")  # True
"Python".startswith("py")          # False

7. endswith()

  • 역할: 특정 문자열로 끝나는지 확인
text.endswith(suffix)
  • 문자열이 suffix로 끝나면 True, 아니면 False

📌 예시:

python복사편집"data.csv".endswith(".csv")  # True
"report.doc".endswith(".pdf")  # False

8. upper(), lower()

  • 역할: 대소문자 변환
text.upper()  # 대문자로 변환
text.lower()  # 소문자로 변환

📌 예시:

"python".upper()     # 'PYTHON'
"HELLO".lower()      # 'hello'
"Data123".lower()    # 'data123'

9. replace()

  • 역할: 문자열 치환
text.replace(old, new)
  • old 문자열을 찾아 new로 바꾼다.

📌 예시:

"Hello, world!".replace("world", "Python")  # 'Hello, Python!'
"2023-03-28".replace("-", "/")              # '2023/03/28'
def remove_special_characters(text):
    processed_text = []
    for sentence in text:
        # 연속으로 replace 가능!
        sentence = sentence.replace(",", "").replace("'","").replace("!","")
        processed_text.append(sentence)

    return processed_text
def remove_special_characters(text):
    processed_text = []
    symbols = [",","'","!"]
    for line in text:
        temp = line
        for symbol in symbols:
            temp = temp.replace(symbol, '')
        processed_text.append(temp)
    return processed_text

10. isalnum()

  • 역할: 영문자 또는 숫자로만 구성됐는지 확인
text.isalnum()
  • 영문자(az, AZ) 또는 **숫자(0~9)**만 있으면 True

  • 공백, 특수문자, 빈 문자열이 포함되면 False

📌 예시:

"abc123".isalnum()   # True
"abc_123".isalnum()  # False (언더스코어 포함)
"hello world".isalnum()  # False (공백 포함)

🧼 공백 문자 정리

문자열에서 자주 만나는 보이지 않는 문자들, 즉 공백 문자는 다음과 같다:

문자설명
' '스페이스바
'\t'탭 (Tab)
'\n'줄바꿈 (엔터 키)

📌 예시:

text = "Hello\tWorld\nNice to meet you"
print(text.split())  # ['Hello', 'World', 'Nice', 'to', 'meet', 'you']

✅ 정리표: 주요 메소드 한눈에 보기

메소드설명예시결과
count('@')문자열에서 @의 개수를 셈"a@b@c".count('@')2
startswith("ab")특정 접두사로 시작하는지"abc".startswith("ab")True
endswith(".txt")특정 접미사로 끝나는지"file.txt".endswith(".txt")True
split("-")구분자를 기준으로 나누기"2023-03-28".split("-")['2023', '03', '28']
upper()대문자로 변환"abc".upper()'ABC'
lower()소문자로 변환"ABC".lower()'abc'
replace("a", "b")문자열 치환"apple".replace("a", "b")'bpple'
isalnum()영문자/숫자만 있는지"abc123".isalnum()True

More from this blog

[Python 자료구조] Binary Tree(이진 트리) 개념과 배열

자료구조 중에서도 가장 자주 등장하고, 가장 중요한 트리 중 하나가 바로 이진트리(Binary Tree)이다.만약 자료구조 공부를 처음 시작했다면, 이진트리는 꼭 제대로 이해하고 넘어가야 할 핵심 개념이다. 그렇다면 이진트리는 도대체 어떤 구조이며, 왜 이렇게 중요할까? 🌳 이진트리란? 이진트리(Binary Tree)는 이름 그대로 자식 노드를 최대 두 개까지만 가질 수 있는 트리를 의미한다.자식 노드가 1개거나 0개일 수도 있지만, 최대...

Apr 8, 20253 min read

[Python 자료구조] Tree(트리) 구조

회사 조직도, 가계도, 또는 어떤 계층적인 구조를 표현할 때 자주 등장하는 그림이 있다. 바로 '트리 구조'이다. 그런데 이 구조를 처음 보면, "도대체 어디가 나무야?" 라고 생각할 수 있다. 하지만 나무를 거꾸로(180도 돌려서) 생각해보면 이해가 쉽다. 위쪽에 커다란 줄기(기둥)가 있고, 아래로 가지가 퍼져 나가는 모습과 아주 흡사하기 때문이다. 그래서 우리는 이런 구조를 트리(Tree) 구조라고 부른다. 🧩 트리(Tree)란 무엇인가...

Apr 8, 20253 min read

[Python 자료구조] Stack(스택)

스택 정의, 값 넣기/빼기 프로그래밍을 처음 접할 때 나오는 대표적인 자료구조 중 하나가 바로 스택(Stack) 이다. 이름만 들으면 어렵게 느껴질 수 있지만, 실제로는 우리 일상에서도 쉽게 찾아볼 수 있는 개념이다. 예를 들어 젠가(Jenga) 게임을 떠올려보자. 스택이란? 젠가로 이해하는 Stack의 원리 젠가 블럭을 하나씩 통에 넣고 꺼내는 상황을 상상해보자. 가장 최근에 넣은 블럭은 통의 가장 위에 쌓이게 된다. 그리고 꺼내고자 할 때...

Apr 7, 20253 min read

[Sql] 제약 조건과 무결성

SQL을 공부하다 보면 반드시 만나게 되는 용어들이 있다. 바로 기본키, 외래키, 무결성 제약 조건 같은 개념이다. 이 글에서는 이 용어들을 단순히 암기하는 게 아니라, 예시를 통해 자연스럽게 이해할 수 있도록 정리해보았다. 🎯 제약 조건이란? 제약 조건(Constraint)은 데이터베이스에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 설정하는 규칙이다. ✅ 한 줄에 하나씩만 작성해야 하며, 테이블 생성 시 컬럼 옆에 정의하거나 AL...

Apr 7, 20253 min read

[Python TIL] Python에서 False와 True로 평가되는 값들

파이썬에서는 if 조건문이나 while 같은 컨트롤 흐름에서 자동으로 False로 간주되는 값들이 있다. 이걸 "Falsy 값" 또는 "Falsy Object" 라고 부른다. 이걸 알아두면 코드를 훨씬 깔끔하게 쓸 수 있다. 예를 들어, if not my_list: 같은 표현이 빈 리스트를 체크하는 데 쓰이기도 하기 때문이다. ⚠️ 파이썬에서 False로 평가되는 값들 (Falsy 값) 유형예시설명 숫자형0, 0.0, 0j정수, ...

Apr 6, 20252 min read

Code Compass

75 posts