如何将货币格式化为可读性最强的python格式

如何将货币格式化为可读性最强的python格式,python,formatting,currency,Python,Formatting,Currency,因此,我试图从一些非常大的浮动中格式化货币,例如 spendings = [1204343.65, 1000000.01, 2310.08, 5.82] 例如,这里最可读的形式可能是: [$1.2M, $1M, $2.31K, $5.82] 那么什么是最合适的方法呢。locale和PythonMoney不能像放逗号那样进行必要的格式化,但它们无法实现压缩。所以,有没有一种方法我可以做到这一点,使它是在其最可读的形式。我在StackOverflow上也找到了很多答案,但没有一个真正回答了我想

因此,我试图从一些非常大的浮动中格式化货币,例如

spendings = [1204343.65, 1000000.01, 2310.08, 5.82]
例如,这里最可读的形式可能是:

[$1.2M, $1M, $2.31K, $5.82] 

那么什么是最合适的方法呢。locale和PythonMoney不能像放逗号那样进行必要的格式化,但它们无法实现压缩。所以,有没有一种方法我可以做到这一点,使它是在其最可读的形式。我在StackOverflow上也找到了很多答案,但没有一个真正回答了我想要实现的目标。

不会总是有办法的。但你必须找到一种方法:

def human_format(num):
    num = float('{:.3g}'.format(num))
    magnitude = 0
    while abs(num) >= 1000:
        magnitude += 1
        num /= 1000.0
    return '${}{}'.format('{:f}'.format(num).rstrip('0').rstrip('.'), ['', 'K', 'M', 'B', 'T'][magnitude])
因此,将其应用于列表如下:

spendings = [1204343.65, 1000000.01, 2310.08, 5.82]
[human_format(i) for i in spendings]
产生:

['$1.2M', '$1M', '$2.31K', '$5.82']
另外,一些答案实际上对这个功能有帮助。我找不到它,但我会尽快喜欢它