문자열 관련 함수
✒️ 2025-05-19 10:31 내용 수정
Do it! 점프 투 파이썬(2017년 발행) 내용을 정리
- 문자열 내장 함수를 사용하면 문자열을 쉽게 다룰 수 있다.
- Java와 JavaScript 등에서도 문자열 내장 함수가 존재한다.
- Java는 String 클래스, JavaScript는 mdn web docs String 참고.
count
count(문자)함수를 사용하여 문자열 중 특정 문자의 개수를 확인할 수 있다.
>>> a = "effort"
>>> a.count('f')
2
find
find(문자)함수를 사용하여 문자열 중 특정 문자가 처음 나온 인덱스를 알 수 있다.- 찾으려는 문자나 문자열이 존재하지 않으면
-1을 반환한다.
>>> a = "Hello World"
>>> a.find("H")
0
>>> a.find("h")
-1
>>> a.find("l")
2
>>> a.find("lo")
3
index
index(문자)함수도find()처럼 문자열 중 특정 문자가 처음 나온 인덱스를 반환한다.- 찾으려는 문자나 문자열이 존재하지 않으면
-1을 반환한다. find()와 다른 점은 문자열 안에 존재하지 않는 문자를 찾으려 하면 오류가 발생한다.
>>> a = "Hello World"
>>> a.index("W")
6
>>> a.index("h")
Traceback (most recent call last):
File "<python-input-110>", line 1, in <module>
a.index("h")
~~~~~~~^^^^^
ValueError: substring not found
join
join()함수를 사용하면 전달 받은 문자열에 특정 문자를 삽입할 수 있다.- 리스트나 튜플에서도 사용할 수 있다.
>>> "|".join("test")
't|e|s|t'
>>> "|".join(['a','p','p','l','e'])
'a|p|p|l|e'
upper와 lower
upper()함수는 소문자를 대문자로 바꾸고,lower()함수는 대문자를 소문자로 바꿔준다.
>>> a = "hello world"
>>> a.upper()
'HELLO WORLD'
>>> b = "NEXT TIME"
>>> b.lower()
'next time'
공백 제거(lstrip, rstrip, strip)
lstrip(): 왼쪽 공백을 지운다.
>>> a = " test "
>>> a.lstrip()
'test '
rstrip(): 오른쪽 공백을 지운다.
>>> a = " test "
>>> a.rstrip()
' test'
strip(): 양쪽 공백을 모두 지운다.
>>> a = " test "
>>> a.strip()
'test'
replace
replace(대상, 바꿀문자열)로 문자열 안의 특정 문자열을 다른 문자열로 치환한다.
>>> a = "Music is on"
>>> a.replace("on", "off")
'Music is off'
split
split(구분자)로 구분자 문자(없을 경우 공백 기준)를 기준으로 문자열을 나누어 리스트에 저장한다.- Java와 JavaScript에서도 매우 자주 사용되는 함수다.
>>> a = "Today is 2025/03/28"
>>> a.split()
['Today', 'is', '2025/03/28']
>>> a.split('/')
['Today is 2025', '03', '28']
문자열의 구성을 확인하는 함수
isalnum(): 문자열이 알파벳 또는 숫자로만 이루어졌다면 True, 아니면 False
>>> "alpha1234".isalnum()
True
>>> "alpha".isalnum()
True
>>> "1234".isalnum()
True
>>> " alpha1234".isalnum()
False
isalpha(): 문자열이 알파벳으로만 이루어졌다면 True, 아니면 False
>>> "alpha".isalpha()
True
>>> "alpha1234".isalpha()
False
>>> " alpha1234".isalpha()
False
isdecimal(): 문자열이 정수 면 True, 아니면 False- 순수 10진수(0~9)거나 전각 숫자(1 2 3) 포함 되어 있는지 확인한다.
- 전각 문자 : 동아시아에서 사용하는 문자폭이 넓은 문자로, 유니코드 범위가
U+FF10~U+FF19이다. - 일반적으로 사용하는 숫자의 유니코드 범위는 ASCII
U+0030~U+0039이다.
>>> "1234".isdecimal()
True
>>> "1.23".isdecimal()
False
isdigit(): 문자열이 숫자로 볼 수 있는 문자(숫자, 전각 숫자, 지수)로 이루어졌다면 True, 아니면 False- 단 소수점
.이나 분수 기호%를 포함하면 False로 뜬다.
- 단 소수점
>>> "1234".isdigit()
True
>>> "1.23".isdigit()
False
print("²".isdigit()) # True
print("Ⅳ".isdigit()) # False
print("3.14".isdigit()) # False
print("10".isdigit()) # True
- Python 버전에 따라 로마자 문자의 경우
isdigit()사용 시 True로 뜨거나 False로 뜨는데, Python 3.9 버전 이상에선 대부분 False를 반환한다. isnumeric()을 사용하면 True로 반환한다.
print("Ⅳ".isdigit()) # False
print("Ⅳ".isnumeric()) # True
isnumeric(): 문자열이 숫자로 볼 수 있는 문자(숫자, 전각 숫자, 지수, 로마자, 분수) 로 이루어졌다면 True, 아니면 False
print("1234".isnumeric()) # True
print("²".isnumeric()) # True
print("Ⅳ".isnumeric()) # True
print("½".isnumeric()) # True
print("10".isnumeric()) # True
print("3.14".isnumeric()) # False
| 함수 | 0-9 | 전각숫자(10) | 지수 | 로마숫자 | 분수 | 소수 | 음수 |
|---|---|---|---|---|---|---|---|
isdecimal() |
✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
isdigit() |
✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ |
isnumeric() |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
isspace(): 문자열이 공백으로만 되어 있다면 True, 아니면 False
>>> " ".isspace()
True
>>> " 1".isspace()
False