2009-09-07 95 views
2

比方说,我有这样的字符串:'12,423,343.93'。如何用简单,有效和优雅的方式将其转换为float删除字符串中的多余符号

看来我需要从字符串中删除多余的逗号,然后调用float(),但我没有很好的解决方案。

感谢

回答

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

谢谢!我试过.replace(),但认为它不能替换为空字符串,所以很傻... – bocco 2009-09-07 19:30:06

+0

呵呵,这不是Oracle,空字符串与null不一样。 :-)你也可以用''替换'',因为空格有时也用作千位分隔符。 – bobince 2009-09-08 00:26:52

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

我给你一个upvote,现在我不再确定。我确实喜欢这个想法,但今天我突然想起了便携式语言环境是多么的不可思议。在三台机器上,我不得不使用三个不同的语言环境名称来产生相同的结果。 – krawyoti 2009-09-08 08:04:56

+0

嗯。你可能有一点。刚刚在Windows系统上尝试过,实际上locale的使用看起来很尴尬。您需要安装确切的语言环境(包括字符集,即使它不需要进行数字处理),以便能够进行设置。 – Brian 2009-09-08 11:15:19