我无法让我的代码计数并重置为零

时间:2016-09-12 00:13:34

标签: python regex

我遇到了创建代码的问题,该代码将在模式未匹配时进行计数,并在该模式使用正则表达式匹配时重置为0。我将列出该文件的一个示例,并尝试演示我要做的事情。无论文件中有多少匹配,我都会收到-1。我也不确定如何在文本文件中格式化数字。

regEx56“找到其中包含56的所有数字,无论位置如何)256 526 065。 regEx57“与56相同,但使用57代替”

p3text file.      python count:    56     57
107                                 -1     -1
328                                  -2     -2
156                                   0     -3
725                                   -1     0

这是我的代码:

import re

my_p3text = open("p3text.txt", "r")
p3data = my_p3text.read()


regEx56 = str(re.findall(r'\b[0-4]*(?:5[0-4]?6|6[0-4]?5)[0-4]*\b',p3data))
regEx57 =str(r'\b[0-4]*(?:5[0-4]?7|7[0-4]?5)[0-4]*\b',p3data)



for line in my_p3text:
    match=regEx56.search(line)
    count = 0
    print (match)


else:
    count = -1
print (count)

1 个答案:

答案 0 :(得分:0)

首先:

for line in my_p3text:
    match=regEx56.search(line)
    count = 0
    print (match)


else:
    count = -1

表示当没有更多行时,它将打印-1,这始终是。在for循环中放入一个if-else语句。

此外,现在你的号码只能从0-4,5,6或7开始;可能0-4在6-7和5之间(反之亦然)。它也以与它开始的方式类似的方式结束。

如果这是你想要的,那就没关系,否则试试......

(\d*((5\d*?[67])|([67]\d*?5))\d*)