为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在匹配行之后从文件中提取 3 行

Python:在匹配行之后从文件中提取 3 行

动漫人物 2022-03-09 21:08:30
我有一个包含数据的文本文件。它包含比我需要的更多信息,因此我试图仅提取标题为“温度”的有关温度的部分。我需要用它提取三行数据,然后最终创建一个仅包含相关数据的新文本文件。以下是文本文件“Test_File.txt”的示例:NOT IMPORTANT234123 1523 1234 613 1234 146134 51234 123231 123 1235123512 5467 3 564 245 26 234 5 62 435 234 534 62 345 2346 234 52 345 2345 2456 2345 2362 3452 346 2345 236 254 24 523 45 23462 345 234 54326 23TEMPERATURE11223 112312 4123123 6423 123124 563456 123123 35734562 34526 3452 346123412 51341 12341 473567 11234 45746 578957 23523 3452 32435 3 32452346 23453 23462 234532 54245 345 4563 6573456 23452345 367 4523 45 2345234NOT NEEDED324123 6462 345 3563 67 566 123 412343 4645 76568 5623 5341 23413 65573568767 345 2354 324623 452 346 2345 234 526 23 4523 452 345 3254 345 WAVELENGTH123 234 5134 234 6246 1234 5623 3 568 3245 8 2455 345 47 2345 22354 46 5657 24455 1345 4566 3 2345 456 6 345 25 34 2354236 2345到目前为止,这是我的代码:with open("Test_File.txt") as data:    data = infile.readlines()data = [x.strip() for x in data]    n = 1000000list = []for item in data:    if item == "TEMPERATURE":        list.append(item)        n = 0        continue    elif n < 4:           list.append(item)        n += 1        continue    elif n >= 4:        breakprint(list)        当我尝试运行它时,我不断收到错误,所以任何帮助将不胜感激!谢谢!
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以使用f.next()或f.__next__()扫描并找到“温度”行,然后附加以下 3 行数据:


Python3:


l = []


with open("Test_File.txt", "r+") as f:

    while f.__next__().strip() != 'TEMPERATURE':

        continue


    for _ in range(3):

        l.append(f.__next__().strip())


print(l)


>> ['11223 112312 4123123 6423 123124 563456 123123 35734562 34526 3452 346', 

    '123412 51341 12341 473567 11234 45746 578957 23523 3452 32435 3 32452346', 

    '23453 23462 234532 54245 345 4563 6573456 23452345 367 4523 45 2345234']

Python2:


l = []


with open("Test_File.txt", "r") as f:

    while f.next().strip() != 'TEMPERATURE':

        continue


    for _ in range(3):

        l.append(f.next().strip())


print(l)


>> ['11223 112312 4123123 6423 123124 563456 123123 35734562 34526 3452 346', 

    '123412 51341 12341 473567 11234 45746 578957 23523 3452 32435 3 32452346', 

    '23453 23462 234532 54245 345 4563 6573456 23452345 367 4523 45 2345234']


查看完整回答
反对 回复 2022-03-09
?
交互式爱情

TA贡献1712条经验 获得超3个赞

import os


a = """

NOT IMPORTANT

234123 1523 1234 613 1234 146134 51234 123231 123 1235123512 

5467 3 564 245 26 234 5 62 435 234 534 62 345 2346 234 52 345 2345 2

456 2345 2362 3452 346 2345 236 254 24 523 45 23462 345 234 54326 23

TEMPERATURE

11223 112312 4123123 6423 123124 563456 123123 35734562 34526 3452 346

123412 51341 12341 473567 11234 45746 578957 23523 3452 32435 3 32452346 

23453 23462 234532 54245 345 4563 6573456 23452345 367 4523 45 2345234

NOT NEEDED

324123 6462 345 3563 67 566 123 412343 4645 76568 5623 5341 23413 65

573568767 345 2354 324623 452 346 2345 234 526 23 4523 452 345 3254 345 

WAVELENGTH

123 234 5134 234 6246 1234 5623 3 568 3245 8 2455 345 47 2345 2

2354 46 5657 24455 1345 4566 3 2345 456 6 345 25 34 2354236 2345"""



def givedata(dataset, word, lines):

    b = ""

    x = dataset.splitlines()

    for line in x: 

        if word in line:

            for y in range(1, lines+1):

                b += x[x.index(line)+y]+ "\n"

    return b

b = givedata(a, "TEMPERATURE", 3)


with open("newfile.txt", "w") as file:

    file.write(b)


os.startfile("newfile.txt")

输出:

11223 112312 4123123 6423 123124 563456 123123 35734562 34526 3452 346

123412 51341 12341 473567 11234 45746 578957 23523 3452 32435 3 32452346 

23453 23462 234532 54245 345 4563 6573456 23452345 367 4523 45 2345234


查看完整回答
反对 回复 2022-03-09
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信