所以这就是我遇到的问题,
我可以在我的文件中找到搜索字词,但目前我只能打印搜索字词所在的行。(感谢之前发布的问题=))。但是我无法在搜索词后打印出文件末尾的所有行。这是我到目前为止的编码: -
search_term = r'\b%s\b' % search_term
for line in open(f, 'r'):
if re.match(search_term, line):
print line,
提前致谢!
答案 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
。