Python v3不一致的正则表达式匹配返回

时间:2017-04-21 09:31:38

标签: regex python-3.x

我正在写一个小的python脚本,它接受一个日志文件,匹配其中的字符串并保存它们和另一个自定义字符串" goal"到另一个文本文件。然后我从第二个文件中取一些值并将它们添加到列表中。问题在于,根据自定义字符串的长度(例如" goalgoalgoal"),值的列表长度不同 - 目前,我正在使用包含1031个匹配项的日志文件字符串"目标",但列表的长度不同于~980和1029之间的所有内容。

以下是代码:

for line in inputfile:
    if "Started---" in line:
       startTime = line[11:23]
       testfile.write("\n"+"Start"+"\n"+"goal "+ startTime+"\n")
       counterLines +=1
    elif "done!" in line: 
       testfile.write("\n"+find_between(line, "| ", "done!")+"\n")
    elif "Errors:" in line:
       testfile.write("\n"+"Errors:"+line.split("Errors:",1)[1]+"\n")
    elif "Warnings:" in line:
       testfile.write("\n"+"Warnings:"+line.split("Warnings:",1)[1]+"\n")
    elif "Successes:" in line:
       testfile.write("\n"+"Successes:"+line.split("Successes:",1)[1]+"\n")
    elif "END---" in line:
       endTime = line[11:23]
       testfile.write("\n"+"End"+"\n"+"endTime "+ endTime+"\n")
    else:
       print("nothing found")

testfileread = open(filePath+"\\testFile.txt", "r")

startTimesList = []
endTimesList =   []

for line in testfileread:
    matchObj = re.match(r'goal', line)
    if matchObj:
       startTimesList.append(line)

print(len(startTimesList))

您是否知道为什么代码没有按预期工作?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

最有可能的原因是你写完后没有刷新testFile.txt - 因此,当你开始阅读时,文件中有不可预测的数据量。调用testfile.flush()应该可以解决问题。或者,将写入逻辑包装在with块中。