从string1打印下一行x行直到string2

时间:2015-10-20 20:21:47

标签: python string lines

我正在尝试编写一个读取文本文件的函数,直到找到一个单词(比如说“hello”),然后打印从字符串1开始的下一行x行(比如“start_description”)直到字符串2 (比如“end_description”)。

hello

start_description 123456 end_description

该函数应该看起来像description(“hello”),以下输出应该看起来像

123456

有点难以解释。我知道如何在文本文件中找到某个单词,但我不知道如何打印两个字符串之间的下几行(start_description和end_description)。

EDIT1: 我找到了一些允许打印下一个8,9,...行的代码。但是因为两个字符串之间的文本长度可变,所以不起作用......

EDIT2: 基本上它与本帖中的问题相同:Python: Print next x lines from text file when hitting string,但范围(8)对我不起作用(参见EDIT1)。

输入文件可能如下所示:

HELLO
salut
A: 123456.

BYE
au revoir
A: 789123.

代码应如下所示:

import re
def description(word):
    doc = open("filename.txt",'r')
    word = word.upper()

    for line in doc:
        if re.match(word,line):
            #here it should start printing all the text between start_description and end_description, for example 123456

    return output

print description("hello")
123456
print description("bye")
789123

2 个答案:

答案 0 :(得分:0)

这是使用split的方法:

start_desc = 'hello'
end_desc = 'bye'
str = 'hello 12345\nabcd asdf\nqwer qwer  erty\n bye'

print str.split('hello')[1].split('bye')[0]

第一次拆分将导致:

('', ' 12345\nabcd asdf\nqwer qwer  erty\n bye')

所以将第二个元素提供给第二个分割,它将导致:

('12345\nabcd asdf\nqwer qwer  erty\n ', '')

使用第一个元素。

如果愿意,您可以使用strip()删除周围的空格。

答案 1 :(得分:0)

<script>