python正则表达式为不完整的小数

时间:2018-04-26 01:08:48

标签: python regex

我有一串数字,可能有不完整的十进制重生

例如

a = '1. 1,00,000.00  1 .99 1,000,000.999'

期望的输出

['1','1,00,000.00','1','.99','1,000,000.999']

到目前为止,我已尝试过以下2

re.findall(r'[-+]?(\d+(?:[.,]\d+)*)',a)

给出了

['1', '1,00,000.00', '1', '99', '1,000,000.999']

使.99到99不理想

re.findall(r'[-+]?(\d*(?:[.,]\d+)*)',a)

给出

['1', '', '', '1,00,000.00', '', '', '1', '', '.99', '', '1,000,000.999', '']

也会产生不良的空字符串结果

这是用于在字符串中查找货币值,因此逗号分隔符不具有设置模式或根本不存在

3 个答案:

答案 0 :(得分:0)

您可以使用re.split

import re
a = '1. 1,00,000.00  1 .99 1,000,000.999'
d = re.split('(?<=\d)\.\s+|(?<=\d)\s+', a)

输出:

['1', '1,00,000.00', '1', '.99', '1,000,000.999']

答案 1 :(得分:0)

我的建议是使用下面的正则表达式:

我在python中实现了一个片段。

import re

a = '1. 1,00,000.00  1 .99 1,000,000.999'

result = re.split('/\.?\d\.?\,?/', a)

print result

输出:

['1','1,00,000.00','1','。99','1,000,000.999']

答案 2 :(得分:0)

这个正则表达式将为您提供所需的输出:

([0-9]+(?=\.))|([0-9,]+\.[0-9]+)|([0-9]+)|(\.[0-9]+)

您可以在此处进行测试:https://regex101.com/r/VfQIJC/6