파이썬에서 문자열을 부동 또는 정수로 변환하는 방법
-
파이썬에서 문자열을 부동으로 변환하는
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