[英]python search key and read line after matching and send to list
我有如下文件输出
some junk text
ignore above text
pen: 4
apple: 10
orange: 20
pen: 30
apple: 40
bat: 20
ball: 300
football: 500
pencil: 200
again junk test ignore it
要求:
在文件中搜索关键字并将接下来的 10 行输出作为值发送到 list1
我试过下面的代码但没有工作。 需要您的帮助才能取得成果。
from itertools import islice
list1 = []
with open ("file.txt") as fin:
for line in fin:
if line.startswith("ignore above text"):
list1 = (islice(fin,9))
print list1
预期输出:
list1 = ['pen: 4','apple: 10','orange: 20',pen: 30','apple: 40','bat: 20','ball: 300', 'football: 500', 'pencil']
您需要将其转换为列表(或元组):
list1 = list((islice(fin,9)))
# ^
否则,它只是一个生成器,如果被问到,它会为您提供下一个值。 但是,您也可以坚持使用生成器并在之后对其进行迭代:
for item in list1:
print(item.strip())
# or anything else
所以你的代码可能会变成:
from itertools import islice
with open("test.txt") as fp:
for line in fp:
if line.startswith('ignore above text'):
for item in islice(fp, 9):
print(item.strip())
你可以试试下面的代码:
file_with_data = open("file.txt", "r")
raw_data = file_with_data.read()
file_with_data.close()
input_data_as_list = raw_data.split("\n")
output_data = []
for i in range(len(input_data_as_list)):
if input_data_as_list[i] == "ignore above text":
output_data = input_data_as_list[i+1:i+10]
break
print(output_data)
mystr=open("your\\file\\path").read()
my_list=mystr.split("\n")
my_list=[item for item in my_list if not item.startswith("ignore")]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.