我试图找到一种方法,在Python中根据所使用的文化代码来格式化数字。
例如,在R中,有一个叫做'formatC'的函数,它的作用正是我所需要的:如果文化代码是'en-US',小数点就会是',',小数点就会是'.'(例如:1,000.00),如果文化代码是'pt-BR',我们就会有1.000,00。
现在,我试图在Python中实现这个功能......不知道是否有一个函数已经实现了......。谁能帮帮我?
你可以使用 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,你将能够格式化广泛的值,以适应特定的位置,而不仅仅是货币!
你需要locale包,它有一些函数可以进行特定的locale格式化。
这个函数是以数字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], ',', '.')