Python:在文件中重新搜索

时间:2016-12-25 23:58:56

标签: python regex

我的txt文件有:

/aaa/AB01_Z
/bbb/AB02_Z
/ccc/AB03_Z
/ddd/AB04_Z

我感兴趣的模式是:

AB01, AB03

我想按此顺序打印带有图案的线条。

我试过了:

import re

lst = ['AB01', 'AB03']
f = open('myfile.txt')

for pattern in lst:
    for line in f:
        if re.search(pattern, line):
            print(line)

但是,这只会返回' / aaa / AB01_Z'。

如果我在模式列表的循环下打开文件,我会得到' / aaa / AB01_Z'和' / ccc / AB03_Z'正如所料:

for pattern in lst:
    f = open('myfile.txt')
    for line in f:
        if re.search(pattern, line):
            print(line)

为什么第一种情况下模式循环不运行?

1 个答案:

答案 0 :(得分:1)

执行for line in f时,只要有f行,您就会获得一个迭代器,为您提供django-taggit行。在第一种情况下,迭代器在处理第一个模式时完成所有行的运行,一旦到达第二个模式就没有提供任何内容。