根据文化代码在Python中对数字进行格式化

问题描述 投票:0回答:2

我试图找到一种方法,在Python中根据所使用的文化代码来格式化数字。

例如,在R中,有一个叫做'formatC'的函数,它的作用正是我所需要的:如果文化代码是'en-US',小数点就会是',',小数点就会是'.'(例如:1,000.00),如果文化代码是'pt-BR',我们就会有1.000,00。

现在,我试图在Python中实现这个功能......不知道是否有一个函数已经实现了......。谁能帮帮我?

python format numbers culture
2个回答
2
投票

你可以使用 python 内置的 'locale' 模块。我想看看这里的文档。https:/docs.python.org2librarylocale.html但对于你的例子,你可以这样做。

import locale

#note the underscore rather than -
locale.setlocale(locale.LC_ALL, 'pt_BR')

print(locale.currency(1000.00, False))
#prints '1000,00'

使用locale,你将能够格式化广泛的值,以适应特定的位置,而不仅仅是货币!


1
投票

你需要locale包,它有一些函数可以进行特定的locale格式化。

https:/docs.python.org3.8librarylocale.html


0
投票

这个函数是以数字d1=','和d2='.'为例,以字符串的形式输出所需格式的数字。

def formatC (number, d1, d2):
    real_part = int (number)
    rest = str(number-int(number))[2:]
    real_part_as_string = str (real_part)

    k = 0
    result = ''

    for i in range (len(real_part_as_string)-1, -1, -1):
        k = k+1
        result = real_part_as_string [i] + result
        if (k % 3 == 0 and i != 0):
            result = d1+result
            k = 0

    if (not rest):
        return result
    return result + d2 + str (rest)

我不知道这是否正是要求的,因为这个返回的是一个字符串。

[已编辑]

格式化一个数组。

def formatArray (array, d1, d2):
    for element in array:
        print (formatC (element, d1, d2))

输入示例:

formatArray ([1200.0, 12346], ',', '.')
© www.soinside.com 2019 - 2024. All rights reserved.