我有1.7m 1.8k和1.2b等值的变量如何将它们转换为实数值,例如
1.7m = 1700000
1.8k = 1800
1.2b = 1200000000
答案 0 :(得分:10)
我会定义一个字典:
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 :(得分:1)
以下是使用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]
答案 2 :(得分:1)
您可能对quantities
或unum
等单位库感兴趣。
答案 3 :(得分:0)
使用lambda:
>>> 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