擅长:python、mysql、java
<p>几个问题:</p>
<p>regex匹配是一个字符串,因此不能有意义地将其与float进行比较(事实上,在python3中,这样做是非法的)。在python2中,任何字符串的比较总是大于一个浮点(因为ASCII中的<code>"str"</code>高于<code>"float"</code>。是的,这个规则没有意义。很好,Python3没有使用它)。在</p>
<p>然后,regex中的最后一个数字在<em>第三个</em>捕获组中,所以您需要</p>
<pre><code>if float(match.group(3)) > 0.4:
</code></pre>
<p>然后,应该在正则表达式中使用逐字字符串(<code>r"..."</code>)。在</p>
<p>最后,<code>\d+\d+</code>当然是多余的,<code>\d+</code>就可以了。在</p>
^{pr2}$
<p>此正则表达式与您给出的示例行相匹配,因此错误消息(表示不匹配)必须具有不同的来源。可能文件中的某个行与正则表达式不匹配。在这种情况下,您可以这样构建您的程序:</p>
<pre><code>for Line in InFile:
match = re.search(r'(\w+)\s\d+\s(\d+)\s\d+\s(\d+\.\d+)', Line)
if match:
if float(match.group(3)) > 0.4:
# do stuff
else:
print "No match: ", Line
</code></pre>