extraxt文本并使用python

时间:2017-04-05 03:02:32

标签: python parsing graphviz

我有一个包含调试信息的文本文件,我感兴趣的是像

这样的行
__kmp_task_alloc(exit): T#0 created task 0xf67980 parent=0xe59580
__kmp_task_alloc(exit): T#2 created task 0x7f5b30100900 parent=0xf67980

我需要保存T#0,T#2或每次根据关键字“创建任务”创建任务时的T#编号 我不熟悉Python,但因为我必须使用graphviz,所以我正在使用它。

按照一些例子我试图这样做

           file  = open("fib5.txt","r")
           lines = file.readlines()
           file.close()
           i=0
           #lock for pattern
           for line in lines:
               #print (line)    
               m = re.search('T#(.+?)created task', line)
                  if m:
                        found = m.group(1)

           print (found)

即使文本文件中有44个匹配,我总是得到结果1。

2 个答案:

答案 0 :(得分:0)

我的印刷品未包含在for循环中

file  = open("fib5.txt","r")
       lines = file.readlines()
       file.close()
       i=0
       #lock for pattern
       for line in lines:
           #print (line)    
           m = re.search('T#(.+?)created task', line)
              if m:
                    found = m.group(1)

                    print (found)

答案 1 :(得分:0)

我重写了你的代码:

with open('fib5.txt', 'r') as f:
lines = f.read()
m = re.findall('T#(.+?)created task', lines)

for x in m:
    print(x)

使用关键字打开文件是一个很好的做法。 Methods of File Objects

您不需要逐行扫描文件。在re模块中有一个函数 findall ,它返回模式的所有匹配。 Finding all Adverbs