숫자 문자열 str을 숫자 int로 변환하고 Python에서 float

사업

Python에서 숫자 문자열을 숫자 값으로 변환하려면 int()를 사용하여 정수로 변환하고 float()를 사용하여 부동 소수점 숫자로 변환합니다.

다음은 샘플 코드와 함께 여기에 설명되어 있습니다.

  • 기본 사용법
    • 숫자 문자열을 정수로 변환:int()
    • 숫자 문자열을 부동 소수점 숫자로 변환:float()
  • 특수 용도
    • 2진수, 8진수 및 16진수 표기법의 문자열을 숫자로 변환합니다.
    • 지수 표기법의 문자열을 숫자 값으로 변환
    • 전각 아라비아 숫자 문자열을 숫자로 변환
    • 한자 문자열을 숫자로 변환

숫자 값을 문자열로 변환하려면 str()을 사용하십시오.

숫자나 문자열을 다양한 형식으로 변환하려면 format() 함수 또는 문자열 메서드 str.format()을 사용합니다. 그런 다음 0 채우기, 2진수, 8진수, 16진수, 지수 표기법 등으로 변환할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.

문자열 목록을 숫자 목록으로 변환할 수도 있습니다. 자세한 내용은 다음 문서를 참조하세요.

숫자 문자열을 정수로 변환:int()

int()를 사용하여 숫자 문자열을 정수 유형 숫자로 변환할 수 있습니다.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

소수점을 포함한 소수 및 쉼표로 구분된 문자열은 ValueError를 발생시킵니다.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

쉼표로 구분된 문자열은 replace() 메서드를 사용하여 쉼표를 제거(빈 문자열로 대체)하여 변환할 수 있습니다.

print(int('10,000'.replace(',', '')))
# 10000

숫자 문자열을 부동 소수점 숫자로 변환:float()

float()를 사용하여 숫자 문자열을 부동 소수점 숫자 유형으로 변환할 수 있습니다.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

정수 부분이 생략된 문자열은 정수 부분을 0으로 보완하여 변환됩니다.

print(float('.23'))
# 0.23

정수 문자열도 부동 소수점 숫자로 변환됩니다.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

2진수, 8진수 및 16진수 표기법의 문자열을 숫자로 변환합니다.

int()의 두 번째 인수로 기수를 지정하면 문자열을 2진수, 8진수, 16진수 등으로 간주하여 정수 int로 변환할 수 있습니다.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

앞의 예에서와 같이 생략하면 숫자는 십진수로 간주됩니다.

print(int('100', 10))
print(int('100'))
# 100
# 100

기수가 0으로 설정된 경우 변환은 문자열 접두사를 기반으로 합니다. 문자열 접두사는 아래를 참조하십시오.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

접두사와 16진수 알파벳은 대문자 또는 소문자일 수 있습니다.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

2진수, 8진수, 16진수 숫자와 문자열의 상호 변환에 대한 정보는 다음 문서를 참조하십시오.

지수 표기법의 문자열을 숫자 값으로 변환

지수 표기법의 문자열은 float()를 사용하여 float 유형으로 직접 변환할 수 있습니다.

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

소문자 e도 대문자로 E를 사용할 수 있습니다.

print(float('1.23E-4'))
# 0.000123

전각 아라비아 숫자 문자열을 숫자로 변환

전각 아라비아 숫자는 int() 또는 float()를 사용하여 숫자로 직접 변환할 수 있습니다.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

그러나 빼기 및 소수점과 같은 기호가 전각 문자인 경우 ValueError가 생성됩니다.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

숫자가 전자이면 문제 없이 변환할 수 있지만 마이너스 및 소수점은 반각 문자입니다. replace() 메서드를 사용하여 전각 기호를 반각 기호로 교체하여 변환이 가능합니다.

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

한자 문자열을 숫자로 변환

unicodedata 모듈의 unicodedata.numeric() 함수는 단일 유니코드 중국어 문자를 부동 소수점 숫자 유형 숫자로 변환하는 데 사용할 수 있습니다.

한 글자가 아닌 경우 오류가 발생합니다. 또한 숫자가 아닌 문자는 오류를 발생시킵니다.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character