[Python TIL] String 메소드
숫자와 특수 문자 검사
🔹 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()
영문자(a
z, 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 |