首页 > 解决方案 > 如何导出具有特定列数的文件的行

问题描述

我有一个文件,其中有数千行不同的列。文件类型是 .msh 文件,也可以使用文本阅读器打开。所有数据也用空格分隔。我的文件的视图:

$MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
2929
1 26.66002035140991 0.75 1.25
2 71.57912731170654 0.75 98.75
3 71.57912731170654 29.25 98.75
...

现在,我想提取有 9 列的行。我尝试了以下代码,但它给了我每一行作为一个字符串,而不是整数或浮点数的分隔列:

with open('my_file') as f:
    saved_lines = [line for line in f if len(line.split()) == 9]

然后,它给出:

'2675 4 2 0 1 25 27 1223 2073\n',
'2676 4 2 0 1 252 272 271 1904\n',
'2677 4 2 0 1 271 251 252 1904\n',
...

虽然我需要将结果作为值数组获取:

[[2675, 4, 2, 0, 1, 25, 27, 1223, 2073]
 [2676, 4, 2, 0, 1, 252, 272, 271, 1904]
 [2677, 4, 2, 0, 1, 271, 251, 252, 1904]
 ...]]

如果有人帮我解决这个问题,我将不胜感激。我很欣赏 numpy 或 pandas 中的任何解决方案。

标签: pythonpandasnumpy

解决方案


还有两个步骤:

  1. 拆分结果行
  2. 将结果转换为numpy数组:
import numpy as np

with open("my_file", "r") as f:
    saved_lines = np.array([line.split() for line in f if len(line.split()) == 9])

print(saved_lines)

推荐阅读