① 문자열 확인
1) isalpha
- "문자열" . isalpha()
- 문자열이 모두 문자(영어 or 한글)이면 True, 아니면 False를 반환합니다.
a = 'abc'
b = '가나다'
c = '123'
print(a.isalpha()) # True
print(b.isalpha()) # True
print(c.isalpha()) # False
2) isalnum
- "문자열" . isalnum()
- 문자열이 영어,숫자,한글로 이루어져 있으면 True, 아니면 False를 반환합니다.
a = "ABC"
b = "123"
c = "A1@D"
d = "A1 2D"
print(a.isalnum()) # True
print(b.isalnum()) # True
print(c.isalnum()) # False
print(d.isalnum()) # False
3) isdigit
- "문자열" . isdigit()
- 문자열이 모두 숫자이면 True, 아니면 False를 반환합니다.
a = 'abc'
b = '가나다'
c = '123'
print(a.isdigit()) # False
print(b.isdigit()) # False
print(c.isdigit()) # True
4) isdecimal
- "문자열" . isdecimal()
- 문자열이 0~9사이의 숫자이면 True, 아니면 False를 반환합니다.
a = "123"
b = "123"
c = "3²"
print(a.isdecimal()) # True
print(b.isdecimal()) # False
print(c.isdecimal()) # False
5) isnumeric
- "문자열" . isnumeric()
- 문자열이 숫자로 인식이 되면 True, 아니면 False를 반환합니다.
a = "123"
b = "3²"
c = "⅓"
print(a.isnumeric()) # True
print(b.isnumeric()) # True
print(c.isnumeric()) # True
※ 위의 3가지 함수(isdigit, isdecimal, isnumeric)는 약간의 차이점이 존재합니다.
。True 반환 조건
- isdecimal : 0 ~ 9 사이의 숫자에 속하는 문자를 숫자로 판단합니다.
(int로 바로 변환이 가능한 수)
- isdigit : 문자열이 '숫자'인지 판단합니다.
- isnumeric : 가장 폭넓은 의미로 숫자를 판단합니다. ( 분수도 숫자로 판단 가능 )
6) isspace()
- "문자열" . isspace()
- 문자열이 모두 공백 문자(공백, 탭, 개행문자 등)로 이루어져 있으면 True, 아니면 False반환
- 공백 문자
- "\t" : 수평 탭을 나타내는 이스케이프 문자( 키보드의 tab 기능과 동일 )
- "\n" : 개행( 다음 줄로 넘어감 )을 나타내는 이스케이프 문자
( 키보드의 enter 기능과 동일 )
- "\r" : 현재 커서 위치를 현재 라인의 시작 위치로 옮김 ( 캐리지 리턴 )
a = " "
b = "A "
c = "\t\n\r"
print(a.isspace()) # True
print(b.isspace()) # False
print(c.isspace()) # True
7) isupper()
- "문자열" . isupper()
- 문자열이 모두 대문자 알파벳으로 이루어져 있는 경우에 True, 아니면 False를 반환합니다.
- 다른 문자( 숫자, 특수문자 등)에 대해서는 영향을 받지 않습니다.
- 반대의 기능 : islower()
a = "ABCD"
b = "Abcd"
c = "A1@D"
d = "A D"
print(a.isupper()) # True
print(b.isupper()) # False
print(c.isupper()) # True
print(d.isupper()) # True
② 문자열로 표현된 숫자식 계산
eval()
- eval("문자열")
- 문자열로 표현된 숫자식을 계산합니다.
- 반환된 계산 값은 int형 입니다.
a = '2+3'
b = '2*6-2'
c = '12//3'
print(eval(a)) # 5
print(eval(b)) # 10
print(eval(c)) # 4
③ 문자열의 유사성 비교
SequenceMatcher()
- SequenceMatcher(None, "문자열", "문자열").ratio()
- 문자열 사이의 유사성을 비교하여 나타냅니다.
from difflib import SequenceMatcher
a = 'ABCD'
b = 'ABCD'
c = 'ABDC'
print(SequenceMatcher(None, a, b).ratio()) # 1.0 <class 'float'>
print(SequenceMatcher(None, a, c).ratio()) # 0.75 <class 'float'>
- 속성
- .a : 맨 처음 입력된 값을 나타냅니다.
- .b : 다음으로 입력된 값을 나타냅니다.
- ratio() : 정확한 유사성을 계산하지만, 비교적 느린 속도를 보여줍니다.
- quick_ratio() : ratio()에 비해 빠른 계산을 보여주지만, 약간의 정확도 저하를 보여줄 수 있습니다.
- real_quick_ratio() : 가장 빠른 계산속도를 보여주지만, 유사성의 정확도가 떨어지는 모습을 보여줄 수 있습니다.
from difflib import SequenceMatcher
txt1 = 'hello world'
txt2 = 'hello kim'
sqm = SequenceMatcher(None, txt1, txt2)
print(sqm.a) # hello world
print(sqm.b) # hello kim
print(sqm.ratio()) # 0.6
print(sqm.quick_ratio()) # 0.6
print(sqm.real_quick_ratio()) # 0.9
'Python' 카테고리의 다른 글
[Python] 힙(heap) (1) | 2023.05.22 |
---|