2009-09-07 8 views
2

문자열에 다음과 같은 문자열이 있다고 가정 해 봅시다. '12,423,343.93'. 간단하고 효과적이면서도 우아한 방법으로 float으로 변환하는 방법은 무엇입니까?문자열에서 중복 된 기호 제거

문자열에서 중복 된 쉼표를 제거한 다음 float()을 호출해야하지만 그럴만한 좋은 해결책은없는 것 같습니다.

감사

답변

9
s = "12,423,343.93" 
f = float(s.replace(",", "")) 
+0

감사합니다. 나는 .replace()를 시도했지만 빈 문자열을 바꿀 수 없다고 생각하여 바보 같았다. – bocco

+0

흠, 이것은 Oracle이 아니며 빈 문자열은 null과 같지 않다. :-) 공백은 때로는 천 단위 구분 기호로 사용되기 때문에 ''와 ''를 사용할 수도 있습니다. – bobince

6

주 사용되는 구분자 기호는 국가에 따라 있음. 일부 문화권에서는 "." 그룹을 구분하는 데 사용되며 ","는 예를 들어 소수점을 나타냅니다. 이와 같이 사용자가 입력 한 문자열을 파싱하는 경우 로켈 모듈을 대신 사용하는 것이 좋습니다. 예 :

>>> import locale 
>>> locale.atof('12,423,343.93') # No locale set yet, so this will refuse to parse 
ValueError: invalid literal for float(): 12,423,343.93 

>>> locale.setlocale(locale.LC_NUMERIC, "en_GB") # Use a UK locale. 
>>> locale.atof('12,423,343.93') 
12423343.93 
+1

나는 당신에게 업보트를주었습니다. 이제는 더 이상 확신 할 수 없습니다. 나는 그 아이디어가 마음에 들지만, 오늘은 휴대용 로케일이 얼마나 작은 지 갑자기 떠올랐다. 세 대의 컴퓨터에서 세 가지 로켈 이름을 사용하여 동일한 결과를 만들어야했습니다. – krawyoti

+0

흠. 포인트가있을 수 있습니다. Windows 시스템에서 똑같은 것을 시도해 보았고 실제로 로케일은 사용하기에 꽤 어색한 것처럼 보입니다. 설치가 가능하려면 정확한 로케일 (숫자 처리에는 필요하지 않지만 charset 포함)이 설치되어 있어야합니다. – Brian