如何只读取某些短语之间的文件

时间:2014-06-01 22:56:58

标签: python

只是一个基本问题。我知道如何从文件中读取信息等但我怎么会只包括某些行之间的行?

说我有这个:

信息包含在文件中但在“文本开头”之前

“文字开头”

我想要的信息

“文字结尾”

文件中包含的信息,但在“文本结束”之后

感谢您为让我入门而给予的任何帮助。

3 个答案:

答案 0 :(得分:1)

您可以逐行阅读该文件,直到您到达开始标记线,然后对这些行执行操作(打印它们,将它们存储在list中等),直到您到达结束标记线。

with open('myfile.txt') as f:
    line = f.readline()
    while line != ' Beginning of text \n':
        line = f.readline()
    while line != ' end of text \n':
        # add code to do something with the line here
        line = f.readline()

确保完全匹配开始和结束标记线。在您的示例中,它们具有前导和尾随空白。

答案 1 :(得分:1)

另一种方法是使用iter()的双参数版本:

start = '" Beginning of text "\n'
end = '" end of text "\n'
with open('myfile.txt') as f:
    for line in iter(f.readline, start):
        pass
    for line in iter(f.readline, end):
        print line

有关详细信息,请参阅https://docs.python.org/2/library/functions.html#iter

答案 2 :(得分:0)

我只是逐行读取文件并检查每一行是否与开头或结尾字符串匹配。然后,布尔值readData指示您是否在开始和结束之间,并且您可以将实际信息读取到另一个变量。

# Open the file
f = open('myTextFile.txt')
# Read the first line 
line = f.readline()
readData=false;

# If the file is not empty keep reading line one at a time
# until the file is empty
while line:
    # Check if line matches beginning
    if line == "Beginning of text":
        readData=true;

    # Check if line matches end
    if line == "end of text"
        readData=false;

    # We are between beginning and end
    if readData:
        (...)
    line = f.readline()
f.close()