kev*_*nlu 67 python type-conversion
如何在Python中将字符串转换123,456.908为float 123456.908?
Kar*_*tel 125
...或者不是将逗号视为要过滤的垃圾,我们可以将整个字符串视为浮动的本地化格式,并使用本地化服务:
from locale import atof, setlocale
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
Run Code Online (Sandbox Code Playgroud)
zee*_*kay 100
只需删除,with replace():
float("123,456.908".replace(',',''))
Run Code Online (Sandbox Code Playgroud)
如果您不知道语言环境并且想要解析任何类型的数字,请使用此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
Run Code Online (Sandbox Code Playgroud)
如果你有一个逗号作为小数分隔符和点作为千位分隔符,你可以这样做:
s = s.replace('.','').replace(',','.')
number = float(s)
Run Code Online (Sandbox Code Playgroud)
希望它会有所帮助
那这个呢?
my_string = "123,456.908"
commas_removed = my_string.replace(',', '') # remove comma separation
my_float = float(commas_removed) # turn from string to float.
Run Code Online (Sandbox Code Playgroud)
简而言之:
my_float = float(my_string.replace(',', ''))
Run Code Online (Sandbox Code Playgroud)
针对不同货币格式的更好解决方案:
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)
Run Code Online (Sandbox Code Playgroud)
此函数通过检查逗号在字符串中从右侧出现的位置来检测逗号是否为千位分隔符或句点是否为小数分隔符。(前提是数字的小数部分不能使用千位分隔符。)
| 归档时间: |
|
| 查看次数: |
133240 次 |
| 最近记录: |