Как заменить 0.9M на число с плавающей запятой Python3? - PullRequest
1 голос
/ 09 мая 2020

Существует ли библиотека Python3, которая преобразует аббревиатуру номера строки как: 10K, 0,2M, 32B и т.д. c. плавать числами?

exmple: 10K => 10000 0,9M => 9000000 и т. Д.

Если библиотеки нет, какой эффективный способ преобразовать эти числа?

** Я попытался отделить число от буквы, но он работает только с int, а не с double.

test_str = "9M"
temp = re.compile("([0-9]+)([a-zA-Z]+)")
res = temp.match(test_str).groups()

Дополнительная информация: Я получаю номер от клиента таким образом и не могу его изменить. Для поздних вычислений нужно было плавать

Спасибо!

1 Ответ

1 голос
/ 09 мая 2020

Попробуйте

>>> 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
...