diff --git a/README.md b/README.md index f9279b4..80203c7 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,20 @@ prefixes = ['kB', 'MB', 'GB'] millify(10000, prefixes=prefixes) # '10kB' ``` +### Convert from human readable number(millified) to number +```python +from millify import unmillify + +unmillify("10k") +# '10000' + +unmillify("5M") +# '5000000' +prefixes = ['kB', 'MB', 'GB'] +unmillify("5kB", prefixes=prefixes) +# '5000' +``` ### Add a thousands separator diff --git a/millify/__init__.py b/millify/__init__.py index ed58dfa..5fe0aca 100644 --- a/millify/__init__.py +++ b/millify/__init__.py @@ -13,6 +13,29 @@ def remove_exponent(d): return d.quantize(Decimal(1)) if d == d.to_integral() else d.normalize() +def unmillify(number, prefixes=[]): + millnames = ['', 'k', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y'] + if prefixes: + millnames = [''] + millnames.extend(prefixes) + search = re.search('(\d+\.)?(\d+)(\w)', number) + groups = search.groups() + millvalues = {} + print(millnames) + for i in range(len(millnames)): + millvalues[millnames[i]] = 1000**i + groups = list(groups) + if groups[0] == None: groups[0] = '0' + try: + millname = groups[-1] + millvalue = millvalues[millname] + value = float(''.join(groups[:-1])) + number = int(value * millvalue) + except: + pass#millvalue = number + return number + + def millify(n, precision=0, drop_nulls=True, prefixes=[]): """Humanize number.""" millnames = ['', 'k', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y']