根据区域性代码在Python中格式化数字

2024-05-20 21:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,在R中,有一个名为“formatC”的函数,它完全满足我的需要: 如果区域性代码为“en US”,则小数点将为“,”,小数点将为“,”(例如:1000.00),如果区域性代码为“pt BR”,则我们将有1.000,00

现在,我正试图用Python实现这一点。。idk如果有一个函数已经这样做了。。。有人能帮我吗


Tags: 方法函数代码brpt数字文化en
3条回答

这是一个函数,它以数字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], ',', '.')

您可以使用python内置的“locale”模块。我想在这里浏览一下文档:https://docs.python.org/2/library/locale.html,但对于您的示例,您可以这样做:

import locale

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

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

使用区域设置,您将能够格式化范围广泛的值,以适应特定的位置,而不仅仅是货币

如果需要区域设置包,它具有用于执行特定于区域设置的格式化的函数:

https://docs.python.org/3.8/library/locale.html

相关问题 更多 >