我有一串数字,可能有不完整的十进制重生
例如
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', '']
也会产生不良的空字符串结果
这是用于在字符串中查找货币值,因此逗号分隔符不具有设置模式或根本不存在
答案 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