我有一个包含调试信息的文本文件,我感兴趣的是像
这样的行__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。
答案 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