-
2021-03-24 17:36:56
a = 15264113.14 # 2f为保留几位小数 b = "{:,.2f}".format(a) # 结果:15,264,113.14 print(b)
更多相关内容 -
python处理千分位分隔符有逗号,点号,空格等情况
2020-11-21 01:37:06radix_point_left_str = split_result[0] # 小数点右边 radix_point_right_str = "" if 1 (split_result): radix_point_right_str = save_decimal_place_str.split('.')[1] # 千分位的分隔符以逗号作为基准 ..."""
from decimal import Decimal
def test():
result = ""
try:
# 计算公式:symbol_left + 格式化美元价 * value + symbol_right
# 公式参数说明:
# 格式化美元价: usaPrice的amount
# decimal_place: 是保留多少小数位
# dec_point: 是小数点符号
# thousands_sep:是千位分割符号
# 获取格式化美元价
usa_price_amount = Decimal('59.24')
value = Decimal('160.234')
symbol_left = '₹'
symbol_right = ""
decimal_place = '2'
dec_point = '.'
thousands_sep = ','
calculate_decimal = usa_price_amount * value
# 保留几位小数
save_decimal_place_str = "%.{0}f".format(int(decimal_place)) % (
calculate_decimal)
# 逗号
comma_str = ","
# 点号
dot_str = "."
if thousands_sep == comma_str and dec_point == dot_str:
thousands_sep_comma_str = "{:,}".format(Decimal(save_decimal_place_str))
result = symbol_left + thousands_sep_comma_str + symbol_right
else:
# 按照文档:由于小数点符号和千位分割符号,
# 会出现小数点符号是逗号,千位分割符号为点号
# 所以对save_decimal_place_str进行拆分
# 小数点左边
split_result = save_decimal_place_str.split('.')
radix_point_left_str = split_result[0]
# 小数点右边
radix_point_right_str = ""
if 1 < len(split_result):
radix_point_right_str = save_decimal_place_str.split('.')[1]
# 千分位的分隔符以逗号作为基准
thousands_sep_comma_str = "{:,}".format(
Decimal(radix_point_left_str))
# 如果千分位的分隔符不是逗号
if thousands_sep != comma_str:
radix_point_left_str = thousands_sep_comma_str.replace(',',
thousands_sep)
else:
radix_point_left_str = thousands_sep_comma_str
new_res = radix_point_left_str + dec_point + radix_point_right_str
result = symbol_left + new_res + symbol_right
except Exception as e:
pass
return result
print(test())
"""
-
千位分隔符的完整攻略
2020-12-11 06:04:16千位分隔符纯整数情况纯整数大概是所有情况里最简单的一种,我们只要正确匹配出千分位就好了。观察上面的数字,我们可以得出千分位的特征是到字符串终止位有 3n 个数字,不包括起始位。于是可以得到这样的函数:...千位分隔符
纯整数情况
纯整数大概是所有情况里最简单的一种,我们只要正确匹配出千分位就好了。
观察上面的数字,我们可以得出千分位的特征是到字符串终止位有 3n 个数字,不包括起始位。于是可以得到这样的函数:
javascriptlet milliFormat = (num) => {
return num && num.toString().replace(/(?=(?!^)(\d{3})+$)/g, ',')
}
但是往往现实没有那么乐观:
小数的情况
遇到小数时,我们的希望只针对整数部分添加千分符,这时问题就变得稍稍有些棘手了。
如果正则引擎支持逆序环视
javascript(?<=^\d+)(?=(\d{3})+\b)
但是多数语言并不支持逆序环视,所以我们要变通一下:
1. 拿到小数的整数部分
也就是起始位到小数点(非数字)之间的部分,可以这样实现:
javascript^\d+
2. 为整数部分添加千分符
这一步可以利用我们之前的实现,整合在一起如下:
javascriptlet milliFormat = (num) => {
return num && num.toString()
.replace(/^\d+/g, (m) => m.replace(/(?=(?!^)(\d{3})+$)/g, ','))
}
这个函数对整、小数都能正确处理:
但在实际中,我们还可能传入一个整、小数混合的字符串:
整、小数混合字符串
这时我们就不能继续用字符串起终点 ^$ 来判定边界了,如果改成单词边界 \b 会发生什么呢:
哦不!连小数部分也被添上千分符了!怎样才能避开小数部分?
重新审视我们捕获整数部分所用到的正则:
javascript\b\d+
\b 的界定是 (?
javascript(^|\s)\d+
咦,多出来一个空白符?别着急,看看我们用来匹配千分位的正则:
javascript(?=(?!^)(\d{3})+$)
判断条件是非起点、到结尾有 3n 个数字的位置,现在为了去掉这多出来的一个空格,我们应将起始条件改成单词边界:
javascript(?=(?!\b)(\d{3})+$)
完整函数如下:
javascriptlet milliFormat = (input) => {
return input && input.toString()
.replace(/(^|\s)\d+/g, (m) => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}
酷炫!我们已经能自如应付各种数值的混合了!这是耳边幽幽飘来产品经理的声音:如果我传入含有非数字的字符串呢……
复杂字符串
在上一个例子中,我们只判断了起始边界,于是 1234ww 中的数字部分也会被捕获。为了解决这个问题,我们要加上终止界定。来看看整、小数成立的条件:
字符串中仅包含有数字 0-9 或小数点
依据这个我们可以这样做:
javascript(^|\s)\d+(?=\.?\d*($|\s))
这个正则表示匹配目标应以字符串起始位或空白符开始,紧接着是数字,数字的右边只允许继续是数字或者一个小数点、直到字符串结尾或下一个空格处。来看看它的匹配效果:
好样的!我们已经能精确匹配出正确的部分了!继续用之前的千分位模式封装:
javascriptlet milliFormat = (() => {
const DIGIT_PATTERN = /(^|\s)\d+(?=\.?\d*($|\s))/g
const MILLI_PATTERN = /(?=(?!\b)(\d{3})+$)/g
return (input) => input && input.toString()
.replace(DIGIT_PATTERN, (m) => m.replace(MILLI_PATTERN, ','))
})()
酷炫!全部都正确处理了!回家睡觉!
更复杂的世界
谢 @vc1 指出,在现实中可能还会有更加复杂的情况,如:
'1234 1234.56 $1234 $-1234 $-1234.56e+7 123...e3'
容我先去买根上吊绳……
(全文完)
参考资料
-
如何在python中将千位分隔符添加到已转换为字符串的数字中?
2020-12-11 06:02:49因此,如果您从数字的文本表示开始,那么在调用format()之前,必须将它们转换为整数或浮点。如果您需要同时处理需要保留的不同精度级别的整数和浮点数,format()代码会迅速变得相当复杂。为了处理这种情况,我最终...这个问题我来晚了,我在寻找解决办法的时候发现了这个问题。在
将,符号与format()一起使用可以很好地工作,但是会带来一些问题,因为不幸的是,,符号不能应用于字符串。因此,如果您从数字的文本表示开始,那么在调用format()之前,必须将它们转换为整数或浮点。如果您需要同时处理需要保留的不同精度级别的整数和浮点数,format()代码会迅速变得相当复杂。为了处理这种情况,我最终编写了自己的代码,而不是使用format()。它使用了最广泛使用的千位分隔符(,)和十进制标记(.),但它可以很快地修改为与其他区域设置的符号一起使用,或者用于创建一个适用于所有区域设置的解决方案。在def separate_thousands_with_delimiter(num_str):
"""
Returns a modified version of "num_str" with thousand separators added.
e.g. "1000000" > "1,000,000", "1234567.1234567" > "1,234,567.1234567".
Numbers which require no thousand separators will be returned unchanged.
e.g. "123" > "123", "0.12345" > "0.12345", ".12345" > ".12345".
Signed numbers (a + or - prefix) will be returned with the sign intact.
e.g. "-12345" > "-12,345", "+123" > "+123", "-0.1234" > "-0.1234".
"""
decimal_mark = "."
thousands_delimiter = ","
sign = ""
fraction = ""
# If num_str is signed, store the sign and remove it.
if num_str[0] == "+" or num_str[0] == "-":
sign = num_str[0]
num_str = num_str[1:]
# If num_str has a decimal mark, store the fraction and remove it.
# Note that find() will return -1 if the substring is not found.
dec_mark_pos = num_str.find(decimal_mark)
if dec_mark_pos >= 0:
fraction = num_str[dec_mark_pos:]
num_str = num_str[:dec_mark_pos]
# Work backwards through num_str inserting a separator after every 3rd digit.
i = len(num_str) - 3
while i > 0:
num_str = num_str[:i] + thousands_delimiter + num_str[i:]
i -= 3
# Build and return the final string.
return sign + num_str + fraction
# Test with:
test_nums = ["1", "10", "100", "1000", "10000", "100000", "1000000",
"-1", "+10", "-100", "+1000", "-10000", "+100000", "-1000000",
"1.0", "10.0", "100.0", "1000.0", "10000.0", "100000.0",
"1000000.0", "1.123456", "10.123456", "100.123456", "1000.123456",
"10000.123456", "100000.123456", "1000000.123456", "+1.123456",
"-10.123456", "+100.123456", "-1000.123456", "+10000.123456",
"-100000.123456", "+1000000.123456", "1234567890123456789",
"1234567890123456789.1", "-1234567890123456789.1",
"1234567890123456789.123456789", "0.1", "0.12", "0.123", "0.1234",
"-0.1", "+0.12", "-0.123", "+0.1234", ".1", ".12", ".123",
".1234", "-.1", "+.12", "-.123", "+.1234"]
for num in test_nums:
print("%s > %s" % (num, separate_thousands_with_delimiter(num)))
# Beginners should note that an integer or float can be converted to a string
# very easily by simply using: str(int_or_float)
test_int = 1000000
test_int_str = str(test_int)
print("%d > %s" % (test_int, separate_thousands_with_delimiter(test_int_str)))
test_float = 1000000.1234567
test_float_str = str(test_float)
print("%f > %s" % (test_float, separate_thousands_with_delimiter(test_float_str)))
希望这有帮助。:)
-
【Python】Pyecharts饼图增加千分位分隔符
2021-11-24 18:12:27【Python】Pyecharts饼图增加千分位分隔符 formatter=JsCode(""" function (params) { var data=params.data; let num = String(data.value), temp_list = []; for(let i=num.length-1, j=1; i>=0; i-- -
Python基础:增加和去除数字的千位分隔符
2021-10-10 15:19:49千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。 处理... -
python格式带空格的字符串千分隔符
2021-03-07 01:05:50@user136036的答案很好,但不幸的是,它没有考虑到Python错误的实际情况。完整答案如下:变体A如果平台的区域设置工作正常,则只需使用区域设置:import localelocale.setlocale(locale.LC_ALL, '')print("{:,d}".... -
python – 如何设置自定义千位分隔符?
2020-12-11 06:02:55我知道理论上大整数的数字可以按数千个分组,以提高可读性:Python 3.5.2 (default, Nov 17 2016, 17:05:23)[GCC 5.4.0 20160609] on linuxType "help", "copyright", "credits" or "license" for more information.&... -
玩转千位分隔符输出 - leejun2005的个人页面 - OSCHINA - 中文开源技术交流社区
2021-01-12 23:12:491、Python1.1 format方法:2.7版本以上直接用format设置千分位分隔符Python2.7(r27:82500,Nov232010,18:07:12)[GCC4.1.220070115(prerelease)(SUSELinux)]onlinux2Type"help","copyright","credits"or"license"form.... -
python数字加千分符
2021-02-19 18:51:34最简单的内置format函数 >>> format(1234567890,',') '1,234,567,890' 参考 https://my.oschina.net/u/3579120/blog/1532547 -
31 python中format方法:字段宽度、精度和千位分隔符 符号、对齐和用0填充
2020-11-24 12:31:39第六课 字段宽度、精度和千位分隔符(format方法)# 字段宽度、精度和千位分隔符# 100,000,000,000# 让一个数值在宽度为2的范围内输出,如果数值没到12位,左侧填充空格 4位呢print("a:{num:2}".format(num = 32)) # a... -
js为数字添加千位分隔符
2020-11-24 12:31:04:d{3})+$)/g, '$1,')的意思就是对后面跟有三个或三的倍数个连续数字的数后面加上逗号 $1是第一个分组即(d) (?:)实际上可以不要,可以将正则式改成/(d)(?=(d{3})$)/g 不过上面的方法只能处理整数 另外分享一个能同时... -
python - 如何使用逗号作为千位分隔符打印数字?
2020-11-24 12:31:40我正在使用python 2.5,因此我无法访问内置格式。我查看了Django代码intcomma(下面的代码中的intcomma_recurs),并意识到它效率低下,因为它是递归的,并且在每次运行时编译正则表达式也不是一件好事。 这不是一个... -
excel数据处理_Excel数据处理(1):千分位分隔符
2020-10-22 18:30:28需要将一些数,用千分位分隔符来表示,如何在Excel中设置呢?1.原始数据:自制图,有些简陋~~2.需求描述:将原始数据,设置千分位分隔符3.处理步骤:1)选中需要改变格式的单元格区域,右击,选中“设置单元格格式”... -
python中怎么把千位分隔符以及货币符号去掉转成数值形式?
2019-07-10 21:22:12python中怎么把千位分隔符以及货币符号去掉转成数值形式? 比如下面的这种 $10,000 ¥1,000,000.00 怎么转换成数值? 用正则表达就可以了 from re import sub money = '¥1,000,000' val = float(sub(r'[^... -
用逗号格式化数字以在Python中分隔成千上万
2021-07-16 12:54:16I have a large dataframe which has a column called Lead Rev. This column is a field of numbers such as (100000 or 5000 etc.) I want to know how to format these numbers to show commas as thousand separ... -
python格式化输出控制
2021-01-13 08:59:52一: 颜色控制: 摘自:http://blog.chinaunix.net/uid-27714502-id-4110758.html \33[0m 关闭所有属性 \33[1m 设置高亮度 \33[4m 下划线 \33... 一些占位符的print http://www.cnblogs.com/plwang1990/p/3757549.html -
用正则表达式实现千分位分隔符
2015-07-10 23:17:43千位分隔符就是在数字中,每隔三位数加进一个逗号,实现的想法就是判断数字中是否有超过四个相连的数字,如果有就在他们中间插入逗号,直到找不到四个相连的数字为止。另外一点是拆分应该是从尾部开始。一开始将... -
python DataFrame数据格式化(设置小数位数,百分比,千分位分隔符)
2022-03-07 14:04:42python DataFrame数据格式化 1.设置小数位数 1.1 数据框设置统一小数位数 1.2 数据框分别设置不同小数位数 1.3 通过Series设置DataFrame小数位数 1.4 applymap(自定义函数) ...3. 设置千分位分隔符 -
Python-数字千分位的处理
2016-10-21 10:51:42第一种方法:2.7版本以上直接用format设置千分位分隔符 a="{:,}".format(12345678) print(a)第二种方法:正则实现 import re a = '20003' result = re.sub(r"(?)(?=(?:\d\d\d)+$)", ",", a) print(result)运行... -
python – 为pandas数据帧中的整数设置千位分隔符
2020-11-24 12:31:38格式(数字),如下例所示,格式化pandas数据帧中的数字:# This works for floats and integersprint '{:,}'.format(20000)# 20,000print '{:,}'.format(20000.0)# 20,000.0问题是,对于具有整数的数据帧不起作用,并且在... -
Python格式字符串带空格的千位分隔符
2020-11-24 12:31:38@ user136036的答案是相当不错的,但是不幸的是,它没有考虑到Python错误的真实性。 完整答案可能如下:变体A如果您的平台的语言环境运行正常,则只需使用语言环境即可:import localelocale.setlocale(locale.LC_... -
Python设置数字格式:小数位数、百分号、千位分隔符
2021-05-04 16:34:00设置千位分隔符:自定义函数+格式化处理 df['data'].map(lambda x : format(x, ',')) # 处理后依然是对象格式。设置千位分割符请小心操作,因为对电脑来说,这些已经不再是数字了,而是数字和逗号组成的字符串,要... -
Python 随身听-巩固基础-字符串格式化的几种套路
2021-01-13 09:00:06解读官方文档时,我们已经看过了官方文档里面的一些字符串的常用格式化方法Python权威学习资料-官方文档-DE8UG解读-07-输入输出文件和字符串,今天我们再把字符串格式化的方法复习一下,增加一些内容,顺便总结一下... -
Python中字符串格式化str.format的详细介绍
2020-11-24 12:31:33前言Python 在 2.6 版本中新加了一个字符串格式化方法: str.format() 。它的基本语法是通过 {} 和 : 来代替以前的 %.。格式化时的占位符语法:?1replacement_field ::= "{" [field_name] ["!" conversion] [":" ... -
如何设置自定义千位分隔符?
2021-07-16 14:40:06I know that theoretically digits in large integers can be grouped by thousands for better readability:Python 3.5.2 (default, Nov 17 2016, 17:05:23)[GCC 5.4.0 20160609] on linuxType "help", "copyright... -
python分隔符
2020-11-24 12:31:191.split不支持同时使用多种字符做分隔符,如果想实现这样的效果,可以用re,例如:s=hello! this?is!what?i! want>>>shello! this?is!what?i! want>>>re...txt:24%backup...
-
java字符串类型<em>数字</em>设置<em>千分位分隔</em>java字符串类型<em>数字</em>设置<em>千分位分隔</em>,可对整数、带小数点的<em>数字</em>、负数进行<em>千分位分隔</em>。并对字符串进行了<em>数字</em>判断,
-
Android的edittext在弹出框<em>中</em>实现输入自动<em>千分位分隔</em>和金额限制自己做的一个自定义控件,里面主要是自定以弹出框,对edittext的回调处理和edittext输入时自动<em>千分位分隔</em>和金额限制
-
wnumb-1.1.0(js<em>数字</em>&金额格式化,<em>千分位</em>)wnumb.js是一个前端格式化<em>数字</em>金额的插件,比如常见的<em>数字千分位</em>问题。用法如下: // 定义格式化的规则 var moneyFormat = wNumb({
-
delohi<em>千分位</em>控件Delphi <em>千分位</em>控件GifImage2.2-D567
-
SQL获取<em>千分位</em>,两种方法select convert(varchar,cast(asst_depreciation_money AS MONEY),1) AS asst_depreciation_money -----带小数