在文件中打印行

时间:2009-12-19 09:50:03

标签: python text printing

所以这就是我遇到的问题,

我可以在我的文件中找到搜索字词,但目前我只能打印搜索字词所在的行。(感谢之前发布的问题=))。但是我无法在搜索词后打印出文件末尾的所有行。这是我到目前为止的编码: -

search_term = r'\b%s\b' % search_term

for line in open(f, 'r'):
    if re.match(search_term, line):
        print line,

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果你第一次编译正则表达式可以大大改进:

search_term_regex = re.compile(r'\b%s\b' % search_term)

found = False
for line in open(f):
    if not found:
        found = bool(search_term_regex.findall(line))
    if found:
        print line,

然后你不重复打印线。

答案 1 :(得分:0)

你可以设置一个布尔标志,例如“found = True”; 并检查找到== True,如果是,则打印该行。

以下代码:

search_term = r'\b%s\b' % search_term

found = False;
for line in open(f, 'r'):
        if found==True:
            print line,
        elif re.match(search_term, line):
            found = True;
            print line,

要解释一下:使用布尔标志,您将向代码中添加一些状态以修改其功能。您希望代码执行的操作取决于您是否在文件中找到了某一行文本,因此表示这种二进制状态的最佳方式(我找到了行还是找不到它?)是像这样的布尔变量,然后让代码根据变量的值做不同的事情。

此外,elif只是缩短else if