파이썬에서 문자열을 부동 또는 정수로 변환하는 방법
-
파이썬에서 문자열을 부동으로 변환하는
float() -
파이썬에서 문자열을 int 로 변환하는
int() -
파이썬에서 문자열을 부동 또는 정수로 변환하는
ast.literal_eval - 파이썬에서 문자열을 부동으로 변환하는 지역화 및 쉼표
- 파이썬에서 문자열을 float 또는 int 로 변환하는 다른 메소드의 성능 비교
이 튜토리얼 기사는 파이썬에서 문자열을 float 또는 int 로 변환하는 방법을 소개합니다.
파이썬에서 문자열을 부동으로 변환하는 float()
float()는 가능하다면 문자열을 float 포인팅 숫자로 변환합니다.
>>> float('111.2222')
111.2222
>>> float('111.0')
111.0
>>> float('111')
111.0
파이썬에서 문자열을 int 로 변환하는 int()
주어진 문자열이 정수의 표현이라면 int()는 문자열을 정수로 변환 할 수있다. 그렇지 않으면 ValueError 가 발생합니다.
>>> int('111')
111
>>> int('111.0')
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
int('111.0')
ValueError: invalid literal for int() with base 10: '111.0'
>>> int('111.22222')
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
int('111.22222')
ValueError: invalid literal for int() with base 10: '111.22222'
주어진 문자열이 부동 포인팅 숫자의 표현이라면 먼저 문자열을 float로 변환 한 다음 int로 캐스트 할 수 있습니다.
>>> int(float('111.0'))
111
파이썬에서 문자열을 부동 또는 정수로 변환하는 ast.literal_eval
ast.literal_eval(string)은 파이썬 표현식을 포함하는 주어진 문자열을 안전하게 평가합니다. 문자열을 float 또는 int 로 자동 변환 할 수 있습니다.
>>> ast.literal_eval('111.2222')
111.2222
>>> ast.literal_eval('111.0')
111.0
>>> ast.literal_eval('111')
111
파이썬에서 문자열을 부동으로 변환하는 지역화 및 쉼표
문자열 표현에 쉼표,가 있으면 float 변환시 ValueError 예외가 발생합니다. 그러나 쉼표는 미국이나 영국과 같은 국가 (예 : ‘111,111.22’)에서 천 단위 구분 기호로 사용되거나 대부분의 유럽 국가에서는 111,222로 표시됩니다.
>>> float('111,111.22')
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
float('111,111.22')
ValueError: could not convert string to float: '111,111.22'
>>> float('111,111')
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
float('111,111')
ValueError: could not convert string to float: '111,111'
locale 모듈은 로케일 정보를 할당하는 데 사용되어야하며 locale.atof()함수는 로케일 설정에 따라 주어진 문자열을 부동 소수점으로 구문 분석 할 수 있습니다.
미국 또는 영국에서 천 단위 구분자로 쉼표
>>> import locale
>>> A = '111,111.222'
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atof(A)
111111.222
>>> locale.atof('111,111')
111111.0
올바른 로케일 설정이 제공되면 쉼표,가 올바르게 해석 될 수 있습니다.
주어진 문자열 표현이 정수인 경우에도 변환 결과는 항상 float유형입니다.
유럽 국가에서 쉼표로 사용되는 쉼표
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'nl_NL')
'nl_NL'
>>> locale.atof('111,222')
111.222
>>> locale.atof('111.111,222')
111111.222
111,222 는 111.222 로 적절하게 변환되고 111.111,222 는 네덜란드와 같은 유럽 국가에서 천 구분자로 사용되므로 111111.222 로 적절하게 변환 될 수 있습니다.
파이썬에서 문자열을 float 또는 int 로 변환하는 다른 메소드의 성능 비교
우리는 다른 방법들 사이의 효율 성능을 확인하기 위해 timeit을 사용합니다.
>>> import timeint
>>> timeit.timeit('float(111.2222)', number=1000000)
0.14707240000007005
>>> timeit.timeit('ast.literal_eval("111.2222")', setup='import ast', number=1000000)
4.779956100000163
>>> timeit.timeit('locale.atof("111.2222")', setup='import locale; locale.setlocale(locale.LC_ALL, "en_US.UTF-8")', number=1000000)
6.092166299999917
ast.literal_eval()메소드는 위에 표시된 것처럼 float메소드보다 훨씬 느립니다. 파이썬에서 단순히 문자열을 float 또는 int 로 변환 해야하는 경우 가장 먼저 선택해서는 안됩니다. ast.literal_eval()은이 응용 프로그램에서 과도하게 엔지니어링되었습니다. 주요 목표는 파이썬 표현식을 포함하는 문자열을 평가해야하기 때문입니다.
locale.atof()도 매우 느리기 때문에 미국이나 영국의 컨벤션을 위해 문자열에 쉼표가있을 경우에만 사용해야합니다. 유럽 국가에서. 다시 말해, 실제로 필요한 경우 locale.atof()를 사용해야합니다.
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