精华内容
下载资源
问答
  • Python控制千分位分隔符格式
    2021-03-24 17:36:56
    a = 15264113.14
    
    # 2f为保留几位小数
    b = "{:,.2f}".format(a)
    
    # 结果:15,264,113.14
    print(b) 
    
    
    更多相关内容
  • radix_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'

    容我先去买根上吊绳……

    (全文完)

    参考资料

    展开全文
  • 因此,如果您从数字的文本表示开始,那么在调用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饼图增加千分位分隔符 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--
  • 千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。 处理...
  • @user136036的答案很好,但不幸的是,它没有考虑到Python错误的实际情况。完整答案如下:变体A如果平台的区域设置工作正常,则只需使用区域设置:import localelocale.setlocale(locale.LC_ALL, '')print("{:,d}"....
  • 我知道理论上大整数的数字可以按数千个分组,以提高可读性: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.&...
  • 1、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
  • 第六课 字段宽度、精度和千位分隔符(format方法)# 字段宽度、精度和千位分隔符# 100,000,000,000# 让一个数值在宽度为2的范围内输出,如果数值没到12位,左侧填充空格 4位呢print("a:{num:2}".format(num = 32)) # a...
  • :d{3})+$)/g, '$1,')的意思就是对后面跟有三个或三的倍数个连续数字的数后面加上逗号 $1是第一个分组即(d) (?:)实际上可以不要,可以将正则式改成/(d)(?=(d{3})$)/g 不过上面的方法只能处理整数 另外分享一个能同时...
  • 我正在使用python 2.5,因此我无法访问内置格式。我查看了Django代码intcomma(下面的代码的intcomma_recurs),并意识到它效率低下,因为它是递归的,并且在每次运行时编译正则表达式也不是一件好事。 这不是一个...
  • 需要将一些数,用千分位分隔符来表示,如何在Excel设置呢?1.原始数据:自制图,有些简陋~~2.需求描述:将原始数据,设置千分位分隔符3.处理步骤:1)选中需要改变格式的单元格区域,右击,选中“设置单元格格式”...
  • python中怎么把千位分隔符以及货币符号去掉转成数值形式? 比如下面的这种 $10,000 ¥1,000,000.00 怎么转换成数值? 用正则表达就可以了 from re import sub money = '¥1,000,000' val = float(sub(r'[^...
  • I 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数据格式化 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)运行...
  • 格式(数字),如下例所示,格式化pandas数据帧数字:# This works for floats and integersprint '{:,}'.format(20000)# 20,000print '{:,}'.format(20000.0)# 20,000.0问题是,对于具有整数的数据帧不起作用,并且在...
  • @ user136036的答案是相当不错的,但是不幸的是,它没有考虑到Python错误的真实性。 完整答案可能如下:变体A如果您的平台的语言环境运行正常,则只需使用语言环境即可:import localelocale.setlocale(locale.LC_...
  •  设置千位分隔符:自定义函数+格式化处理 df['data'].map(lambda x : format(x, ',')) # 处理后依然是对象格式。设置千位分割符请小心操作,因为对电脑来说,这些已经不再是数字了,而是数字和逗号组成的字符串,要...
  • 解读官方文档时,我们已经看过了官方文档里面的一些字符串的常用格式化方法Python权威学习资料-官方文档-DE8UG解读-07-输入输出文件和字符串,今天我们再把字符串格式化的方法复习一下,增加一些内容,顺便总结一下...
  • 前言Python 在 2.6 版本中新加了一个字符串格式化方法: str.format() 。它的基本语法是通过 {} 和 : 来代替以前的 %.。格式化时的占位语法:?1replacement_field ::= "{" [field_name] ["!" conversion] [":" ...
  • I 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:19
    1.split不支持同时使用多种字符做分隔符,如果想实现这样的效果,可以用re,例如:s=hello! this?is!what?i! want>>>shello! this?is!what?i! want>>>re...txt:24%backup...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 900
精华内容 360
关键字:

python中数字增加千分位分隔符

友情链接: cximage_full.rar