回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个数字串,可能有不完整的十进制转述</p>
<p>例如</p>
<pre><code>a = '1. 1,00,000.00 1 .99 1,000,000.999'
</code></pre>
<p>期望输出</p>
<pre><code>['1','1,00,000.00','1','.99','1,000,000.999']
</code></pre>
<p>到目前为止,我已经尝试了以下两个</p>
<pre><code>re.findall(r'[-+]?(\d+(?:[.,]\d+)*)',a)
</code></pre>
<p>这给了</p>
<pre><code>['1', '1,00,000.00', '1', '99', '1,000,000.999']
</code></pre>
<p>这使得0.99到99这是不需要的</p>
<p>而</p>
<pre><code>re.findall(r'[-+]?(\d*(?:[.,]\d+)*)',a)
</code></pre>
<p>给予</p>
<pre><code>['1', '', '', '1,00,000.00', '', '', '1', '', '.99', '', '1,000,000.999', '']
</code></pre>
<p>这也会产生不需要的空字符串结果</p>
<p>这用于在字符串中查找货币值,以便逗号分隔符没有设置的模式或根本不存在</p>