Python 에서 문자열이 숫자인지 확인하는 방법

PythonBeginner
지금 연습하기

소개

이 랩에서는 Python 에서 문자열이 숫자를 나타내는지 확인하는 방법을 배우게 됩니다. 먼저, numeric_strings.py라는 Python 스크립트에서 숫자를 닮은 다양한 문자열을 정의하는 것으로 시작합니다. 이 스크립트는 이러한 문자열을 콘솔에 출력하여 후속 분석을 위한 기반을 마련합니다.

다음으로, isdigit() 메서드를 사용하여 숫자만 포함하는 문자열, 즉 음수가 아닌 정수를 나타내는 문자열을 식별하는 방법을 살펴봅니다. 이 메서드는 데이터 유효성 검사 및 숫자형으로의 안전한 변환을 보장하는 데 매우 중요합니다.

숫자 문자열 정의

이 단계에서는 Python 이 숫자를 나타내는 문자열을 어떻게 처리하는지 살펴봅니다. 이러한 문자열을 "숫자 문자열 (numeric strings)"이라고 합니다. 숫자 문자열을 식별하고 처리하는 방법을 이해하는 것은 데이터 유효성 검사 및 조작에 매우 중요합니다.

숫자 문자열은 숫자로 해석될 수 있는 문자만 포함하는 문자열입니다. 이는 정수, 부동 소수점 숫자 또는 과학적 표기법의 숫자일 수도 있습니다.

몇 가지 예제를 검토하기 위해 Python 스크립트를 만들어 보겠습니다.

  1. VS Code 편집기에서 ~/project 디렉토리에 numeric_strings.py라는 새 파일을 만듭니다.

  2. 다음 코드를 numeric_strings.py 파일에 추가합니다.

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
  1. numeric_strings.py 파일을 저장합니다.

  2. 이제 터미널에서 스크립트를 실행합니다.

python numeric_strings.py

다음과 같은 출력을 볼 수 있습니다.

String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5:   56
String 6: abc
String 7: 123.45.67
String 8: 1e10

보시다시피, 숫자처럼 보이는 여러 문자열을 정의했습니다. 다음 단계에서는 이러한 문자열 중 어떤 것을 숫자형으로 안전하게 변환할 수 있는지 알아보겠습니다.

정수에 isdigit() 사용

이 단계에서는 isdigit() 메서드를 사용하여 문자열이 숫자만 포함하고 음수가 아닌 정수를 나타내는지 확인하는 방법을 배우겠습니다. 이 메서드는 사용자 입력 또는 파일에서 읽은 데이터를 검증하는 데 특히 유용합니다.

isdigit() 메서드는 Python 의 내장 문자열 메서드입니다. 문자열의 모든 문자가 숫자이고 최소한 하나의 문자가 있는 경우 True를 반환하고, 그렇지 않으면 False를 반환합니다.

isdigit()을 사용하도록 이전 스크립트를 수정해 보겠습니다.

  1. VS Code 편집기에서 numeric_strings.py 파일을 엽니다.

  2. 다음과 같이 isdigit() 메서드를 포함하도록 코드를 수정합니다.

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
  1. numeric_strings.py 파일을 저장합니다.

  2. 터미널에서 스크립트를 실행합니다.

python numeric_strings.py

다음과 같은 출력을 볼 수 있습니다.

String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 '  56  ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False

보시다시피, isdigit()는 숫자만 포함하는 문자열에 대해서만 True를 반환합니다. 소수점, 음수 기호, 공백 또는 숫자 이외의 문자를 포함하는 문자열에 대해서는 False를 반환합니다.

이 메서드는 문자열을 오류 없이 정수로 안전하게 변환할 수 있는지 확인하는 데 유용합니다. 그러나 isdigit()는 음수가 아닌 정수에 대해서만 작동한다는 점을 기억하는 것이 중요합니다. 다른 숫자형의 경우, 다음 단계에서 보듯이 다른 접근 방식을 사용해야 합니다.

float() 변환 시도

이 단계에서는 float() 함수를 사용하여 문자열을 부동 소수점 숫자로 변환하는 방법을 살펴보겠습니다. 이는 소수점이 있거나 과학적 표기법으로 표현된 숫자로 작업해야 할 때 유용합니다.

float() 함수는 Python 의 내장 함수로, 인수를 부동 소수점 숫자로 변환하려고 시도합니다. 인수가 문자열인 경우, 부동 소수점 숫자의 유효한 표현이어야 합니다.

float()을 사용하고 다양한 문자열을 처리하는 방식을 확인하기 위해 스크립트를 다시 수정해 보겠습니다.

  1. VS Code 편집기에서 numeric_strings.py 파일을 엽니다.

  2. float() 함수를 포함하고 잠재적인 오류를 처리하도록 코드를 수정합니다.

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]

for s in strings:
    try:
        float_value = float(s)
        print(f"String '{s}' can be converted to float: {float_value}")
    except ValueError:
        print(f"String '{s}' cannot be converted to float")
  1. numeric_strings.py 파일을 저장합니다.

  2. 터미널에서 스크립트를 실행합니다.

python numeric_strings.py

다음과 같은 출력을 볼 수 있습니다.

String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String '  56  ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0

보시다시피, float()는 정수, 소수, 과학적 표기법으로 표현된 숫자를 나타내는 문자열을 성공적으로 변환할 수 있습니다. 또한 선행 및 후행 공백도 자동으로 제거합니다 (예: string5). 그러나 문자열을 유효한 부동 소수점 숫자로 해석할 수 없는 경우 (string6string7에서와 같이) ValueError를 발생시킵니다.

try-except 블록을 사용하면 이러한 잠재적인 오류를 적절하게 처리하고 프로그램이 충돌하는 것을 방지할 수 있습니다. 이는 사용자 입력 또는 외부 소스의 데이터를 사용할 때 일반적이고 중요한 관행입니다.

요약

이 랩에서는 숫자로 해석될 수 있는 문자 (정수, 부동 소수점 등) 를 포함하는 문자열인 Python 의 숫자 문자열을 정의하는 것으로 시작했습니다. 다양한 문자열 형식을 설명하기 위해 정수, 십진수 및 숫자 이외의 문자가 있는 문자열을 포함하여 다양한 문자열을 정의하고 인쇄하는 numeric_strings.py 스크립트를 만들었습니다.

다음으로, 문자열이 숫자만 포함하는지 확인하여 음수가 아닌 정수를 나타내는 isdigit() 메서드를 탐색하기 시작했습니다. 이 랩은 이 메서드를 사용하여 문자열을 검증하는 방법을 계속 시연하도록 설정되었습니다.