파이썬에서 문자열이 숫자를 포함하는지 확인하는 방법

Jinku Hu 2023년1월30일
  1. 문자열에 숫자가 포함되어 있는지 확인하기위한str.isdigit의 파이썬 any함수
  2. map()함수
  3. re.search(r'\d')문자열에 숫자가 포함되어 있는지 확인
파이썬에서 문자열이 숫자를 포함하는지 확인하는 방법

이 기사에서는 파이썬 문자열에 숫자가 포함되어 있는지 확인하는 방법을 소개합니다.

파이썬 내장 any 함수str.isdigit과 함께 주어진 문자열에 숫자가 포함되어 있으면 True를 반환합니다 그렇지 않으면False를 반환합니다.

주어진 문자열에 숫자가 포함되어 있으면 패턴 r'\d'를 가진 파이썬 정규 표현식 검색 방법은True를 반환 할 수도 있습니다.

문자열에 숫자가 포함되어 있는지 확인하기위한str.isdigit의 파이썬 any함수

any 함수는 주어진iterable의 요소가True이면True를 반환하고, 그렇지 않으면False를 반환합니다.

str.isdigit()는 주어진 문자열의 모든 문자가 숫자이면True를, 그렇지 않으면False를 반환합니다.

any(chr.isdigit() for chr in stringExample)

stringExample에 최소한 숫자가 들어 있으면 stringExamplechr에 대한chr.isdigit()iterable에 적어도 하나의True가 있으므로 위의 코드는True를 반환합니다.

** 작업 예 **

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(chr.isdigit() for chr in str1))
print(any(chr.isdigit() for chr in str2))
print(any(chr.isdigit() for chr in str3))

출력:

True
False
True

map()함수

파이썬 map(function, iterable) 함수은 주어진iterable의 모든 요소에function을 적용하고 반복자를 반환합니다 위의 결과를 산출합니다.

따라서 위의 솔루션을 다음과 같이 다시 작성할 수 있습니다.

any(map(str.isdigit, stringExample))

** 작업 예 **

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(map(str.isdigit, str1)))
print(any(map(str.isdigit, str2)))
print(any(map(str.isdigit, str3)))

출력:

True
False
True

re.search(r'\d')문자열에 숫자가 포함되어 있는지 확인

re.search(r'\d', string) 패턴string을 스캔하고 일치하는 객체를 반환합니다 주어진 패턴과 일치하는 첫 번째 위치-\d-0에서 9 사이의 숫자를 의미하며 일치하는 것이 없으면 ‘없음’을 반환합니다.

import re

print(re.search(r"\d", "python3.8"))
# output: <re.Match object; span=(6, 7), match='3'>

match 객체는match의 시작과 끝 위치를 나타내는 2-tuple spanmatch = '3'과 같은 일치하는 내용을 포함합니다.

bool()함수는re.search 결과를match 객체또는None에서True 또는False로 캐스트 할 수 있습니다.

** 작업 예 **

import re

str1 = "python12"
str2 = "nonumber"
str3 = "12345"

print(bool(re.search(r"\d", str1)))
print(bool(re.search(r"\d", str2)))
print(bool(re.search(r"\d", str3)))

출력:

True
False
True

런타임 측면에서 정규식 평가는 내장 문자열 함수를 사용하는 것보다 훨씬 빠릅니다. 문자열의 값이 상당히 크면 문자열 함수를 사용하는 것보다re.search()가 더 최적입니다.

주어진 문자열에서search()함수를 실행하기 전에re.compile()을 사용하여 표현식을 컴파일하면 실행 시간이 더욱 빨라집니다.

compile()의 반환 값을 변수에 넣고 해당 변수 내에서search()함수를 호출합니다. 이 경우search()는 단일 매개 변수, 즉 컴파일 된 표현식에 대해 검색 할 문자열 만 필요합니다.

def hasNumber(stringVal):
    re_numbers = re.compile("\d")
    return False if (re_numbers.search(stringVal) == None) else True

요약하면 내장 함수any()isdigit()를 함께 사용하여 문자열에 숫자가 포함되어 있는지 확인할 수 있습니다.

그러나 정규 표현식 모듈re 내에서 유틸리티 함수search()compile()을 사용하면 내장 된 문자열 함수보다 빠르게 결과가 생성됩니다. 따라서 큰 값이나 문자열을 다루는 경우 정규식 솔루션이 문자열 함수보다 훨씬 더 최적입니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - Python String