extraxt文本并使用python将其保存在变量中

extraxt文本并使用python将其保存在变量中,python,parsing,graphviz,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 每次基于关键字“created task”创建任务时,我都需要保存T#0、T#2或任何T#编号 我不熟悉Python,但因为我必须使用graphviz,所以我正在使用它

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

__kmp_task_alloc(exit): T#0 created task 0xf67980 parent=0xe59580
__kmp_task_alloc(exit): T#2 created task 0x7f5b30100900 parent=0xf67980
每次基于关键字“created task”创建任务时,我都需要保存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。

我的打印未包含在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)

我的打印不包括在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)

我已修改了您的代码:

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

for x in m:
    print(x)
使用带有关键字的打开文件是一种很好的做法


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

我已经修改了您的代码:

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

for x in m:
    print(x)
使用带有关键字的打开文件是一种很好的做法


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

你想参加第5组,但你应该找第1组。是的,但那是为了探索,我会解决这个问题,谢谢!我认为这是你的问题,因为这是一个问题,你没有具体说明。到底出了什么问题?它总是打印1,即使文本文件有44个Hitsys,因为您的
打印
for
循环之外,并且它正在打印
找到的最后一个值。您正在尝试选择第5组,但您应该寻找第1组。是的,但这是为了探索,我会解决这个问题,谢谢!我认为这是你的问题,因为这是一个问题,你没有具体说明。实际上出了什么问题?即使文本文件有44个Hitsys,它也总是打印1,因为您的
打印
for
循环之外,并且它正在打印找到的
的最后一个值。