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

我正在使用 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)

这是关于钱的,所以你可以假设如果有小数(分),可能会有两位小数。


米脂
浏览 111回答 1
1回答

慕莱坞森

您可以使用此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,551500,551500,55150015001500,55细节:[,.]+(?!\d{2}$): 如果结束前没有 2 位数字,则匹配逗号或点|: 或者[^\d.,]+:匹配 1 个或多个非数字、点和逗号的任意字符'': 替换为空字符串replace('.', ','): 用逗号替换最后一个点
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python