从txt文件的一行中获取数字,并将其用作提取行的输入

2024-10-02 00:44:07 发布

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

这个标题听起来可能很奇怪。所以我会尽力解释这个问题。你知道吗

我有一个txt文件(由另一个软件生成),看起来像:

 EVAPORATION AND TRANSIPIRATION TOTALS     PERIOD    1   STEP    1,   15 COLUMNS,   10 ROWS,  1 LAYERS       ELAPSED TIME 6.0000000E+00           DAYS

    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000        1.00000    


 EVAPORATION AND TRANSIPIRATION TOTALS     PERIOD    1   STEP    2,   15 COLUMNS,   10 ROWS,  1 LAYERS       ELAPSED TIME 1.2000000E+01           DAYS

    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    10.00000        2.00000        2.00000        2.00000        2.00000        7.00000        2.00000        6.00000        6.00000        5.00000        2.00000        3.00000        4.00000        1.00000        0.00000


 EVAPORATION AND TRANSIPIRATION TOTALS     PERIOD    1   STEP    3,   15 COLUMNS,   10 ROWS,  1 LAYERS       ELAPSED TIME 1.8000000E+01           DAYS

    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    2.00000        4.00000        1.00000        2.00000        4.00000        1.00000        3.00000        4.00000        6.00000        8.00000        0.00000        1.00000        2.00000        2.00000        1.00000    
    2.00000        3.00000        2.00000        2.00000        2.00000        5.00000        0.00000        6.00000        1.00000        3.00000        2.00000        3.00000        4.00000        1.00000        0.00000      


 EVAPORATION AND TRANSIPIRATION TOTALS     PERIOD    1   STEP    4,   15 COLUMNS,   10 ROWS,  1 LAYERS       ELAPSED TIME 2.4000000E+01           DAYS

    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000        0.00000    
    3.00000        3.00000        3.00000        3.00000        3.00000        3.00000        3.00000        4.00000        4.00000        3.00000        2.00000        1.00000        0.00000        3.00000        1.00000    

正如您所看到的,它有两个空行(同样对于第一个块,在这里不可见),一行有一些文本,另一个空行和一种矩阵(以此类推)。你知道吗

我要做的是从一些步骤的每个矩阵(从每个块)中提取最后n行(以用户的数字给出,例如从步骤2到步骤3)

n值由每个矩阵上方的行数给出。每个块的数字总是相同的(所以在这个例子中,我想提取第二个和第三个矩阵的最后10行)。你知道吗

我需要把行块放在一个字典里,其中键在步骤中(每个块的变化,在本例中是2和3),值是对应的最后10行(所以可能是np数组作为值)。你知道吗

有人有什么建议吗?你知道吗

谢谢


Tags: columnsandtimelayersstep步骤矩阵days
2条回答

您可以使用.split()函数来简化这个过程。它解释得很好。你知道吗

我确信这不是最有效的方法(任何其他建议都会受到欢迎),但是因为您知道每个值之间的空格数,所以可以使用它来获得值的列表。在您提供的代码中,每个值之间当前似乎有8个空格。一旦你有 例如,如果调用

file = myfile.split("        ")

项目列表存储在文件中。这个列表基本上是myfile的全部,但是每次您看到两个项之间有8个空格时,它就成为文件中的一个新项。因此,每个值都将存储为此列表的一个单独项,因为它们之间有8个空格。您可能需要删除或忽略列表中的前几个项目,因为这些项目将包括您的标题已经被拆分的部分。这是一个很糟糕的解释,但希望你能理解。你知道吗

您可以使用它来编写一个函数,将每个值块放置在其单独的列表中。

首先使用此选项将每个块放置到列表列表(嵌套列表)中,其中主列表中的每个项都是块的一行(或一列,具体取决于访问它们的方式)。如果您以前没有遇到过这个概念,那么它将被覆盖here。所以,他们最终会变成这样:

step1 = [[0.00000, 0.00000, 0.00000...], [0.00000, 0.00000, 0.00000...], [0.00000, 0.00000, 0.00000...], ...]


在这种情况下step1将包含20个列表(每个列表是步骤1块的一行),每个列表包含15个值-步骤1
块的每列一个值。

如果您想访问表的第3行,只需键入step1[3],这将为您提供一个列表,其中第3行的所有项目按顺序排列,从左到右在您的问题中显示的块上(为了解释,我将第一个(顶部)行0,第二个行1,等等)。

如果要在第4行第3列(调用第一列第0列)中查找该项,可以将其作为step1[4][3]查找。你知道吗

请注意,我首先分配了行,然后在列中嵌套了一个列表,因为这对于一次提取整行稍微容易一些,正如您所希望的那样。你知道吗

下面假设文件的格式是特定的(因为它是由程序生成的,所以足够合理)。也就是说,对于每个块,您需要两个空行、一个字符串行、一个空行和20行数据(总共24行)。你知道吗

由于相对于可用内存,文件较小,因此可以一次性加载整个文件。然后用简单的算术,你就可以计算出从一个特定的块开始读取要跳过多少行。然后,您可以将接下来的n行作为生成器传递给^{},这将高效而轻松地将它们加载到数组中。唯一需要注意的是,当您使用readlines()读取文件时,您会保留换行符,当您将数据传递给numpy(line[:-1])时,您需要删除它。你知道吗

import numpy as np

def read_data(fname, rows, first_block, last_block):
    with open(fname) as f:
        data = f.readlines()
    blocks = {}
    for block in range(first_block, last_block+1):
        start = 24 * block + 24 - rows
        blocks[block] = np.genfromtxt((line[:-1] for line in data[start:start+rows]), autostrip=True)
    return blocks

你可以这样跑

data = read_data('my_data.txt', 10, 2, 3)

它将返回一个浮点型数组字典。在本例中,将有data[2]data[3]。你知道吗

相关问题 更多 >

    热门问题