Python 3.x 每行导入一个特定格式的文件到Python

Python 3.x 每行导入一个特定格式的文件到Python,python-3.x,Python 3.x,如何导入包含带数字的纯文本的文件 很难导入,因为第一行包含7个数字,第二行包含8个数字 一般而言: 第1行:7个数字。 第2行:8个数字。 第3行:7个数字。 第4行:8个数字。 ... 等等 我刚刚试着阅读,但无法导入。我需要将数据保存在NumPy数组中 filepath = 'CHALLENGE.001' with open(filepath) as fp: line = fp.readline() cnt = 1 while line: print("Lin

如何导入包含带数字的纯文本的文件

很难导入,因为第一行包含7个数字,第二行包含8个数字

一般而言:

第1行:7个数字。 第2行:8个数字。 第3行:7个数字。 第4行:8个数字。 ... 等等

我刚刚试着阅读,但无法导入。我需要将数据保存在NumPy数组中

filepath = 'CHALLENGE.001'
with open(filepath) as fp:
   line = fp.readline()
   cnt = 1
   while line:
       print("Line {}: {}".format(cnt, line.strip()))
       line = fp.readline()    
       cnt += 1

该文件包含每个频率的信息,如下所述:


< P>阅读时,你也必须跳过空白行。 只需检查第一行是否为空。如果不是,请多读3行。 冲洗并重复

下面是numpy数组和熊猫数据帧的示例

import pandas as pd
import numpy as np

filepath = 'CHALLENGE.001'

data = []

headers = ['frequency in Hz',
        'ExHy coherency',
        'ExHy scalar apparent resistivity',
        'ExHy scalar phase',
        'EyHz coherency',
        'EyHx scalar apparent resistivity',
        'EyHx scalar phase',
        're Zxx/√(µo)',
        'im Zxx/√(µo)',
        're Zxy/√(µo)',
        'im Zxy/√(µo)',
        're Zyx/√(µo)',
        'im Zyx/√(µo)',
        're Zyy/√(µo)',
        'im Zyy/√(µo)',
        ]

with open(filepath) as fp:
    while True:
        line = fp.readline()
        if not len(line):
            break

        fp.readline()
        line2 = fp.readline()
        fp.readline()

        combined = line.strip().split() + line2.strip().split()

        data.append(combined)

df = pd.DataFrame(data, columns=headers).astype('float')
array = np.array(data).astype(np.float)

# example of type
print(type(df['frequency in Hz'][0]))

唯一的补充是。。。数据是dtype=object,但为了绘图(频率与ExHy一致性),我只做下一步:
x=df.frequency.values.astype(float)
。但我如何才能将数据帧中的每个值转换为浮点值呢?@PAULGOYES在创建数据帧时只需添加
.astype('float')
。我改变了我的例子来反映这一点。