擅长:python、mysql、java
<p>这样的事情可以用正则表达式来完成:</p>
<pre><code>import re
source = 'total cumulative payment $2000.00; some other amount $1234.56. Total Cumulative Payment (USD) $5,600,000.06'
matches = re.findall( r'total\s+cumulative\s+payment[^$0-9]+\$([0-9,.]+)', source, re.IGNORECASE )
amounts = [ float( x.replace( ',', '' ).rstrip('.') ) for x in matches ]
</code></pre>
<p>这将与您给出的两个具体示例相匹配。但是你还没有给出多少关于匹配标准应该有多宽松,或者规则是什么的想法。如果源文档在单词“cumulative”中出现拼写错误,上述解决方案将丢失金额。或者如果金额没有美元符号出现。它还允许<em>任何</em>在“累计付款总额”和美元金额之间插入文本(因此您将从<code>source = "This document contains information about total cumulative payment values, (...3 more pages of introductory material...) and by the way you owe me $20."</code>得到一个假阳性)现在,这些东西可以被调整和改进-但前提是你知道什么是重要的,什么不是,并相应地收紧问题的规格。在</p>