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