为了账号安全,请及时绑定邮箱和手机立即绑定

用正则表达式替换数字中的分隔符

用正则表达式替换数字中的分隔符

米脂 2023-07-27 17:53:19
我正在使用 python 和 regexp,需要将所有千位分隔符 (,.) 替换为空字符串 (''),并且只允许逗号 (,) 作为小数分隔符或没有小数。所以 - - 1,500.55 -> 1500,55 - 1.500.55 -> 1500,55 - 1500.55 -> 1500,55  - 1,500 -> 1500 - 1 500 -> 1500它也可能是字符串中的一些字母,也应该用空字符串替换 -支付 1,500.55 -> 1500,55我有这样的代码,但该代码会错误地接受逗号作为千位分隔符,并且不会将点替换为逗号作为小数分隔符 -cleaned = re.sub(r"[^\d,]+", '', clean_str)这是关于钱的,所以你可以假设如果有小数(分),可能会有两位小数。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您可以使用此sub + replace代码:


>>> import re

>>> reg = re.compile(r'[,.]+(?!\d{2}$)|[^\d.,]+')

>>> arr = ['1,500.55', '1.500.55', '1500.55', '1,500', '1 500', '1,500,55']

>>> for i in arr:

...     print ( reg.sub('', i).replace('.', ',') )

...

1500,55

1500,55

1500,55

1500

1500

1500,55

细节:

  • [,.]+(?!\d{2}$): 如果结束前没有 2 位数字,则匹配逗号或点

  • |: 或者

  • [^\d.,]+:匹配 1 个或多个非数字、点和逗号的任意字符

  • '': 替换为空字符串

  • replace('.', ','): 用逗号替换最后一个点


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信