def convert(value):
if value:
# determine multiplier
multiplier = 1
if value.endswith('K'):
multiplier = 1000
value = value[0:len(value)-1] # strip multiplier character
elif value.endswith('M'):
multiplier = 1000000
value = value[0:len(value)-1] # strip multiplier character
# convert value to float, multiply, then convert the result to int
return int(float(value) * multiplier)
else:
return 0
values = [
'',
'10',
'10K',
'2.3K',
'2.34K',
'2M',
'2.2M',
'2.23M',
]
# use a list comprehension to call the function on all values
numbers = [convert(value) for value in values]
print numbers
import re
def transform_value(value):
match = re.match(r'^(\d*(?:\.\d+)?)([kgm]?)$', value, re.IGNORECASE)
if match:
number = match.group(1) or '0'
group = match.group(2).lower()
if group:
return int(float(number) * 10**{'k': 3, 'm': 6, 'g': 9}[group])
return int(number)
return 0
new_arr = [transform_value(value) for value in
['','10','10K','2.3K','2.34K','2M','2.2M','2.23M']]
print(new_arr)
4条答案
按热度按时间gxwragnw1#
您的步骤应该是:
这可以通过以下方式实现:
这应该会返回
uidvcgyl2#
获取浮点数的快速方法:
vcirk6k63#
我同意其他答案,这个解决方案将是最好的解决它没有正则表达式。
但是,如果你仍然想使用regex,这里有一个很好的方法使用JavaScript(抱歉,不熟悉Python):
如果有人能把它翻译成Python,那就最好了(而且它会很好地教我一点Python)。:))
zzwlnbp84#
输出