반응형
파이썬에서 점과 쉼표가있는 문자열을 부동 소수점으로 어떻게 변환 할 수 있습니까?
파이썬 123,456.908
에서 부동 처럼 문자열을 어떻게 변환 할 수 123456.908
있습니까?
다음 ,
과 replace()
같이 제거하십시오 .
float("123,456.908".replace(',',''))
... 또는 쉼표를 필터링 할 쓰레기로 처리하는 대신 전체 문자열을 float의 현지화 된 형식으로 처리하고 현지화 서비스를 사용할 수 있습니다.
from locale import *
setlocale(LC_NUMERIC, '') # set to your default locale; for me this is
# 'English_Canada.1252'. Or you could explicitly specify a locale in which floats
# are formatted the way that you describe, if that's not how your locale works :)
atof('123,456') # 123456.0
# To demonstrate, let's explicitly try a locale in which the comma is a
# decimal point:
setlocale(LC_NUMERIC, 'French_Canada.1252')
atof('123,456') # 123.456
이건 어때?
my_string = "123,456.908"
commas_removed = my_string.replace(',', '') # remove comma separation
my_float = float(commas_removed) # turn from string to float.
요컨대 :
my_float = float(my_string.replace(',', ''))
소수점 구분 기호로 쉼표를 사용하고 천 단위 구분 기호로 점을 사용하는 경우 다음을 수행 할 수 있습니다.
s = s.replace('.','').replace(',','.')
number = float(s)
도움이되기를 바랍니다.
로케일을 모르고 모든 종류의 숫자를 구문 분석하려면 이 parseNumber(text)
함수를 사용 하십시오 . 완벽하지는 않지만 대부분의 경우를 고려하십시오.
>>> parseNumber("a 125,00 €")
125
>>> parseNumber("100.000,000")
100000
>>> parseNumber("100 000,000")
100000
>>> parseNumber("100,000,000")
100000000
>>> parseNumber("100 000 000")
100000000
>>> parseNumber("100.001 001")
100.001
>>> parseNumber("$.3")
0.3
>>> parseNumber(".003")
0.003
>>> parseNumber(".003 55")
0.003
>>> parseNumber("3 005")
3005
>>> parseNumber("1.190,00 €")
1190
>>> parseNumber("1190,00 €")
1190
>>> parseNumber("1,190.00 €")
1190
>>> parseNumber("$1190.00")
1190
>>> parseNumber("$1 190.99")
1190.99
>>> parseNumber("1 000 000.3")
1000000.3
>>> parseNumber("1 0002,1.2")
10002.1
>>> parseNumber("")
>>> parseNumber(None)
>>> parseNumber(1)
1
>>> parseNumber(1.1)
1.1
>>> parseNumber("rrr1,.2o")
1
>>> parseNumber("rrr ,.o")
>>> parseNumber("rrr1rrr")
1
s = "123,456.908"
print float(s.replace(',', ''))
여기 내가 당신을 위해 쓴 간단한 방법이 있습니다. :)
>>> number = '123,456,789.908'.replace(',', '') # '123456789.908'
>>> float(number)
123456789.908
그냥 교체 ,
교체로 ().
f = float("123,456.908".replace(',','')) print(type(f)
type ()은 그것이 float로 변환되었음을 보여줍니다.
Better solution for different currency formats:
def text_currency_to_float(text):
t = text
dot_pos = t.rfind('.')
comma_pos = t.rfind(',')
if comma_pos > dot_pos:
t = t.replace(".", "")
t = t.replace(",", ".")
else:
t = t.replace(",", "")
return(float(t))
반응형
'programing tip' 카테고리의 다른 글
pydot이 Windows 8에서 GraphViz의 실행 파일을 찾을 수없는 이유는 무엇입니까? (0) | 2020.11.19 |
---|---|
ng-click으로 DOM 개체에 대한 참조 전달 (0) | 2020.11.19 |
PHP : 예외를 포착하고 실행을 계속할 수 있습니까? (0) | 2020.11.19 |
전체 단어를 고려하여 문자열에서 처음 100 자 가져 오기 (0) | 2020.11.19 |
Spring restTemplate을 사용한 REST API의 기본 인증 (0) | 2020.11.19 |