example.txt文件:
total tests passed : 0 in last run
number of test passed : 0 in yesterday
sent report for passed : 0 in tests
请注意:此文件不限于3行,如上所示。有时候只会有一条线。有时它会超过三行。
现在我的工作是:
任务1:Grep all"通过:"计数
示例输出:
0
23
0
任务2:如果任何一个"通过计数不等于零"然后打印" TASK已完成"
示例输出:
TASK Completed
我尝试过以下Python代码:
import re
test = open("test.txt", 'r')
for i in test:
output = re.match('.*(passed :)(.*) (in)', i)
if output:
print output.group(2)
现在我可以打印所有"传递:"数(任务1)。
如何比较所有这些值,如果任何一个值不等于零则打印为"任务已完成"?
请问这个想法吗?
答案 0 :(得分:1)
怎么样?
completed = False
for i in test:
output = re.match('.*(passed :)(.*)', i)
if output:
print output.group(2)
if not output.group(2) == "0":
completed = True
if completed:
print "TASK COMPLETED"
-
所以你还需要正则表达式将数字分开,
尝试
re.match( r'.*(passed : )(\d*)(.*)', i )
这意味着,找到"通过:"后跟任意数量的数字,后跟任何其他文本。 应根据需要将数字分组为匹配组。
答案 1 :(得分:1)
import re
PASSED = re.compile(r" passed : (\d+)")
def get_passed_values(s):
for match in PASSED.finditer(s):
yield int(match.group(1)) # return the number as an integer
def is_complete(s):
return any(v > 0 for v in get_passed_values(s))
with open("test.txt") as test:
s = test.read()
if is_complete(s):
print("TASK COMPLETED")
else:
raise ValueError("All 0s!")
编辑:我在所有0上添加了“提升异常”条款。