Python:读取数据集fi

2024-09-30 20:35:45 发布

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

我必须读取并存储一个由3列和N行*块数组成的数据文件。。下面是一个简单的例子:

z=3 
1 2 3 
2 5 6 
1 5 7

z=2
1 3 9
2 5 7

使用python读取这个文件并存储几个z行块的最佳方法是什么?你知道吗

编辑:我必须将它们存储到单独的块(索引)中,例如在上面的示例中,我应该

block[0]=[[1 2 3],[2 5 6],[1 5 7]] 
block[1] = [[1 3 9],[2 57]]   

@shahaf he come lo indicizzo?沙哈夫来了吗?斯库萨·马·索诺·乌恩·努布在Python中:) 有人能给我解释一下如何标示这几个街区吗?尤其是我写了z= N,但实际上是

 ZONE I=     41  F=POINT  TIME T=      0.0000715363

我得赶41号。。然后读取并存储follow 41行,然后在几行白线之后我遇到另一个ZONE部分。。我不知道档案里有多少区域。。你知道吗


Tags: 文件方法zone编辑示例lo数据文件block
2条回答

我不确定您到底想如何存储它们,但我发现了一种使用regex模块和for循环的快速通用方法:

import re

with open('path/to/file', 'r') as fh:
    lines = fh.readlines()

# Should give this structure
# lines = ['z=3','1 2 3', '4 5 6', '7 8 9', 'z=2', '3 5 9', '8 6 4', 'z=5', '12 3 5', '8 5 7', '1 1 1', '2 3 2', '6 6 5']

blocks = []

for i in range(len(lines)):
    if 'z=' in lines[i]:
        j = re.findall('\d',lines[i])[0]
        block = lines[i+1:i+j]
        blocks.append(block)
    else:
        continue

blocks将有一个列表结构:[['1 2 3', '4 5 6', ...], [...]]。您可以使用split()方法进一步细化它,但这应该会让您起步。当然,这确实假设您可以在开始时将数据放入结构中,如果数据在文件中,这很容易,但我不确定您是否从数据库中提取数据

这是一个简单的解决方案草案,可以简化,但你可以从这里开始

tmp_arr= list()
output=list()
with open('file.txt') as f:
  for line in f.readlines():
    if len(line.strip()) == 0:
      pass
    elif line.startswith('z='):
      counter = int(line.split('=')[-1])
    else:
      tmp_arr.append(line.split())
      counter -= 1
      if counter == 0:
        output.append(tmp_arr)
        tmp_arr = list()

输出

[[['1', '2', '3'], ['2', '5', '6'], ['1', '5', '7']], [['1', '3', '9'], ['2', '5', '7']]]

相关问题 更多 >