как сделать изменение переменной из текста "1m" в "1000000" в Python - PullRequest
1 голос
/ 15 марта 2010

У меня есть переменные со значениями, такими как 1.7m, 1.8k и 1.2b, как я могу преобразовать их в вещественное значение, например

1.7m = 1700000
1.8k = 1800
1.2b = 1200000000

Ответы [ 4 ]

10 голосов
/ 15 марта 2010

Я бы определил словарь:

tens = dict(k=10e3, m=10e6, b=10e9)

затем

x='1.7m'
factor, exp = x[0:-1], x[-1].lower()
ans = int(float(factor) * tens[exp])
1 голос
/ 16 марта 2010

Вас может заинтересовать библиотека единиц, например quantities или unum.

0 голосов
/ 16 марта 2010

Использование лямбды:

>>> tens = {'k': 10e3, 'm': 10e6, 'b': 10e9}
>>> f = lambda x: int(float(x[:-1])*tens[x[-1]])
>>> f('1.7m')
17000000
>>> f('1.8k')
18000
>>> f('1.2b')
12000000000
0 голосов
/ 15 марта 2010

Вот пример использования re:

input = '17k, 14.05m, 1.235b'

multipliers = { 'k': 1e3,
                'm': 1e6,
                'b': 1e9,
              }

pattern = r'([0-9.]+)([bkm])'

for number, suffix in re.findall(pattern, input):
    number = float(number)
    print number * multipliers[suffix]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...