Python:如何从文本文件中分割位置数据

标签 python

我有一个包含数据的文本文件,我正在尝试用 Python 读取这些数据:

OMEGA2    1.450E+00 1.500E+00 1.550E+00 1.600E+00 1.650E+00 1.700E+00
OMEGA2    1.800E+00 1.850E+00 1.900E+00 1.950E+00 2.000E+00 2.050E+00
F2REAL    1.146E+00 -1.015E+03-2.206E+03-2.618E+03-2.288E+03-1.400E+03
F2REAL    6.255E+00 -3.254E+02-8.150E+02-1.060E+03-9.749E+02-5.995E+02
F2REAL    1.754E+01 -1.530E+02-4.375E+02-5.932E+02-5.618E+02-3.536E+02
F2REAL    1.740E+01 -7.981E+01-2.525E+02-3.748E+02-3.891E+02-2.739E+02
OMEGA2    1.800E+00 1.850E+00 1.900E+00 1.950E+00 2.000E+00 2.050E+00

现在,我只想获取以 F2REAL 开头的行的值; 每行我想提取 6 个值。 value1 是从索引 11 到索引 20,value 是从索引 21 到 30,...,值 6 是从索引 61:70

我尝试了以下方法:

file = 'file.txt'
STR1 = 'F2REAL'

def get_data():
    with open(file) as f:
        hyd_all = f.readlines()
        for line in hyd_all:
            if STR1 in line:
                print([float(line[10:19]),float(line[20:29])])

get_data()
  1. 这不会读取 E-power,因为我得到 [1.146,-1.015,..]。如何正确获取?
  2. 除了写 10:19,20:29,..60:69 之外,还有更好的方法吗? 所有感兴趣的行都有 6 列,并且始终从 10*i 开始
  3. 我想将每个结果附加到一个矩阵中。在这个 4 行 6 列的示例中

最佳答案

  1. 电子符号就是一种符号。这些值已正确解析,只是表示方式不同

  2. 你可以使用列表理解

  3. 假设您正在谈论 numpy 矩阵(否则只需切换到 pandas DataFrame):

import numpy as np


def get_data(path: str, target: str, width: int = 10):
    values = []
    with open(path, 'r') as f:
        for line in f.readlines():
            # 'F2REAL' should be at the beginning of the line not just anywhere
            if line.startswith(target):
                # map sequential fixed widths to float
                values.append([float(line[width*i:width*(i+1)]) for i in range(1, 7)])

    return np.asarray(values)
    

print(get_data('file.txt', 'F2REAL'))

输出:

[[ 1.146e+00 -1.015e+03 -2.206e+03 -2.618e+03 -2.288e+03 -1.400e+03]
 [ 6.255e+00 -3.254e+02 -8.150e+02 -1.060e+03 -9.749e+02 -5.995e+02]
 [ 1.754e+01 -1.530e+02 -4.375e+02 -5.932e+02 -5.618e+02 -3.536e+02]
 [ 1.740e+01 -7.981e+01 -2.525e+02 -3.748e+02 -3.891e+02 -2.739e+02]]

关于Python:如何从文本文件中分割位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66183285/

相关文章:

python - 将科学计数法转换为人类可读的 float

python - 在通用 View 中验证用户?

python - 有效地计算邻居之间的距离

python - Numpy 数组 : Efficient use of arrays containing indices

python - 无法导入 JSONDecodeError

python - 如何在 Qt 环境中嵌入的 matplotlib 中更快地绘制大量信号?

javascript - 使用 CustomJS 过滤数据帧和绘图的 Bokeh 选择小部件回调

python - 如何读取串行缓冲区中的一个字节,删除它,然后继续下一个字节?

python - 在 Kivy 中使用变量和函数时未定义名称

python - (Python3) Linux 和 Windows 箭头键按下