我正在尝试编写一个读取文本文件的函数,直到找到一个单词(比如说“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
答案 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>