关于Python的语言环境设置,已经有很多问题了,这些问题都是关于如何用相应的千和十进制分隔符格式化一个数字,我认为最好的是here
但是,我一直在尝试通过将其功能扩展到百分比来构建此解决方案,但没有成功:
import locale
locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
def pbr(number, isfloat=True):
if isfloat:
return locale.format_string('%.2f', number, grouping=True)
else:
return locale.format_string('%.2%', number, grouping=True) # Not working
显然'%.2%'
不是一个有效的格式化程序,但我不知道应该怎么做才能使
In [1]: pbr(81.23421039401, isfloat=False)
Out[1]: '8.123,42%'
另外,考虑到Python3.8,语言环境解决方案的这种实现(包括format_string
函数语法,这似乎是Python2时代的一些遗留问题)仍然是最优的吗
查看Python documentation和Python reference的字符串格式,您似乎试图使用“旧格式样式”中“新格式样式”中的
%
操作符,这意味着其他内容。这就解释了你的方法失败的原因使用区域设置实现所需的一种方法是执行乘法并自己添加
%
符号:我不能说这在Python3.8中是否仍然是最佳的,我觉得应该有一种方法可以简单地将string.format与新样式一起使用,但我还没有找到让它使用区域设置的方法
相关问题 更多 >
编程相关推荐