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

2024-09-28 17:29:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数据的文本文件。它包含了比我需要的更多的信息,所以我试图只提取标题为“温度”的关于温度的部分。我需要用它提取三行数据,然后最终用相关数据创建一个新的文本文件。在

下面是一个测试文本文件的示例_文件.txt'看起来像:

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

以下是我目前为止的代码:

^{pr2}$

当我试着运行它时,我总是遇到一个错误,所以任何帮助都将是非常感谢的!谢谢您!在


Tags: 文件数据代码txt信息标题示例not
2条回答

您可以使用f.next()f.__next__()扫描并找到行“TEMPERATURE”,然后附加以下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:

^{pr2}$
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")

输出:

^{pr2}$

相关问题 更多 >