我在优化这部分代码时遇到了一些麻烦。它有效,但似乎不必要的慢。该函数searchString
在从 line 开始的文件中搜索 aline_nr
并返回第一次命中的行号。
import linecache
def searchStr(fileName, searchString, line_nr = 1, linesInFile):
# The above string is the input to this function
# line_nr is needed to search after certain lines.
# linesInFile is total number of lines in the file.
while line_nr < linesInFile + 1:
line = linecache.getline(fileName, line_nr)
has_match = line.find(searchString)
if has_match >= 0:
return line_nr
break
line_nr += 1
我已经尝试过这些方面的东西,但从未设法实现“从某个行号开始”输入。
编辑:用例。我正在对包含文本和数字的分析文件进行后期处理,这些文本和数字被拆分为带有标题的不同部分。line_nr 上的标头用于拆分数据块以进行进一步处理。
调用示例:
startOnLine = searchStr(fileName, 'Header 1', 1, 10000000): endOnLine = searchStr(fileName, 'Header 2', startOnLine, 10000000):