我不是在谈论特定的行号,因为我正在读取具有相同格式但长度不同的多个文件。 说我有这个文本文件:
Something here... ... ... ... Start #I want this block of text a b c d e f g h i j k l m n End #until this line of the file something here... ... ... ...
我希望你知道我的意思。我正在考虑遍历文件,然后使用正则表达式搜索以找到“开始”和“结束”的行号,然后使用线缓存从开始行读取到结束行。但是如何获得行号?我可以使用什么功能?
如果您只想要Start和之间的文本块End,则可以执行以下操作:
Start
End
with open('test.txt') as input_data: # Skips text before the beginning of the interesting block: for line in input_data: if line.strip() == 'Start': # Or whatever test is needed break # Reads text until the end of the block: for line in input_data: # This keeps reading the file if line.strip() == 'End': break print line # Line is extracted (or block_of_lines.append(line), etc.)
实际上,您不需要操纵行号即可读取开始和结束标记之间的数据。
在两个块中都重复了逻辑(“读到…”),但是它非常清楚和有效(其他方法通常涉及[在块之前/块内/块结束之前]检查某些状态,这会产生时间损失)。