量化情绪 2022-04-22 18:36 采纳率: 0%
浏览 252
已结题

以python正则一行代码实现对整数(不带小数点)或小数点后存在任意位数的数进行千分位分隔,小数点后不加分隔符

a = “20010320.888888888”

r=re.sub(”(?<=[0-9])(?=([0-9]{3})+(?![0-9]))“, “,” ,a) #小数位数一多就不行了
20,010,320.888,888,888
注意:不要采用字符串format格式化,权当re思维练习;
一行实现对不带小数点的整数也适用

  • 写回答

9条回答 默认 最新

  • 陆海潘江小C 2020CSDN博客之星Top85 2022-04-22 19:23
    关注
    获得4.50元问题酬金

    修改如下,对于整数以及带有小数点的数测试正确,如有帮助,希望采纳一下

    import re
    a = "20010326807.25858"
    r = re.sub("(?!^)(?=(\d{3})+(\.))", "," ,a) if '.' in a else re.sub("(?!^)(?=(\d{3})+($))", "," ,a)
    print(r)
    

    加个限制(\.)表示符号是 . 则结束匹配,然后因为当没有小数点时,正则也会无法匹配,而如果要以$取匹配整数,小数的情况又无法匹配。
    所以,搞了很久,发现这个只能分情况区使用正则表达式。要写成一行也可以。

    如有帮助,希望采纳一下

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 赞助了问题酬金25元 4月22日
  • 修改了问题 4月22日
  • 修改了问题 4月22日
  • 展开全部

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价