Python - 解析带有自定义价格单位的字符串
在Python中,把字符串转换成整数的最快方法是什么?这个字符串可能包含一些自定义的单位,比如“k”(千)、“m”(百万)或者“b”(十亿)。
举个例子:
100 -> 100
100k -> 100000
100m -> 100000000
100b -> 100000000000
谢谢。
4 个回答
1
编辑:更好的示例,可能的错误修复
>>> def get_unit(ustr):
... if ustr == '': return 'u'
... return ustr.lower()
...
>>> import re
>>> r=re.compile('([1-9][0-9]*)([kKmMbBgG]?)')
>>> units={'k':1000,'m':1000000,'g':1000000000,'b':1000000000,'u':1}
>>> result=r.match('120k')
>>> int(result.group(1))*units[get_unit(result.group(2))]
120000
>>> result=r.match('44')
>>> int(result.group(1))*units[get_unit(result.group(2))]
44
>>> result=r.match('44M')
>>> int(result.group(1))*units[get_unit(result.group(2))]
44000000
>>>
2
def numerize(s):
multipliers = {'k': 10**3, 'm': 10**6, 'b': 10**9}
if s[-1] in multipliers:
return int(s[:-1]) * multipliers[s[-1]]
else:
return int(s)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
7
def convert(val):
lookup = {'k': 1000, 'm': 1000000, 'b': 1000000000}
unit = val[-1]
try:
number = int(val[:-1])
except ValueError:
# do something
if unit in lookup:
return lookup[unit] * number
return int(val)
>>> print convert("100m")
>>> 100000000
先创建一个查找表,然后把数字分成数字部分和单位部分。如果有单位部分,就去查找表里找对应的值,用这个值来生成最终的数字。如果没有单位部分,那就直接返回这个数字。