如何将0.9M改为浮点数Python3?
How to change 0.9M to float number Python3?
是否有 Python3 库可以将字符串数字的缩写如:10K、0.2M、32B 等转换为浮点数?
例如:10K => 10000
0.9M=> 9000000等等.
如果没有图书馆,转换这些数字的有效方法是什么?
**我试图将数字与字母分开,但它只适用于 int 而不是 double。
test_str = "9M"
temp = re.compile("([0-9]+)([a-zA-Z]+)")
res = temp.match(test_str).groups()
更多信息:我通过这种方式从客户那里得到号码,无法更改。它需要为后期计算浮动
谢谢!
尝试
>>> import re
>>>
>>> fact_dic = {'': 1, 'K': 1000, 'M': 1000000}
>>>
>>> def GetFloatFromFactor( input ):
... m = re.search( r"^(\d+(?:\.\d*)?|\.\d+)([KM]?)$", input)
... if m != None:
... fval = float( m.group(1) ) * fact_dic[ m.group(2) ]
... return fval
... else:
... return "no match"
...
>>> GetFloatFromFactor( '3K' )
3000.0
>>> GetFloatFromFactor( '12.4M' )
12400000.0
>>> GetFloatFromFactor( '098.281' )
98.281
是否有 Python3 库可以将字符串数字的缩写如:10K、0.2M、32B 等转换为浮点数?
例如:10K => 10000 0.9M=> 9000000等等.
如果没有图书馆,转换这些数字的有效方法是什么?
**我试图将数字与字母分开,但它只适用于 int 而不是 double。
test_str = "9M"
temp = re.compile("([0-9]+)([a-zA-Z]+)")
res = temp.match(test_str).groups()
更多信息:我通过这种方式从客户那里得到号码,无法更改。它需要为后期计算浮动
谢谢!
尝试
>>> import re
>>>
>>> fact_dic = {'': 1, 'K': 1000, 'M': 1000000}
>>>
>>> def GetFloatFromFactor( input ):
... m = re.search( r"^(\d+(?:\.\d*)?|\.\d+)([KM]?)$", input)
... if m != None:
... fval = float( m.group(1) ) * fact_dic[ m.group(2) ]
... return fval
... else:
... return "no match"
...
>>> GetFloatFromFactor( '3K' )
3000.0
>>> GetFloatFromFactor( '12.4M' )
12400000.0
>>> GetFloatFromFactor( '098.281' )
98.281