如何在Python中使用包装的列读取数据?

时间:2019-03-18 19:08:43

标签: python numpy file-io formatting

我正在尝试读取以下数据

#Header line1
#Header line2
#Header line3
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6

前3行是标题,随后的行是6个变量,这些变量反复重复,换句话说:

var1

在Python中的单个变量中收集所有1.1234567890123E+12的最佳方法是什么?

任何想法都值得赞赏。


编辑:

请注意,数字并不总是用空格分隔。当右边的数字为负数时会发生这种情况,因为它显示了第2列和第3列之间的第3行。

始终相同的是格式-1.2345678901234E+12,如果是负数,则frida -U -p XXX -l test.js --no-pause 。即小数点前的1个数字,小数点后的13个数字和指数中的2个数字。

1 个答案:

答案 0 :(得分:3)

我不确定此解决方案的总体效果如何,但是它可以解决您的问题。

首先,您可能应该分别处理标头和文件的其余部分。这是数据部分。

使用pandas固定列文件读取器read_fwf读取数据,跳过前三行:

import pandas as pd
import numpy as np
data = pd.read_fwf("yourfile", skiprows=2, widths=[20,20,20,20])

从数据框中提取值,将其展平:

values = data.values.reshape(1,-1)[0]

删除空单元格,将其重塑为六列:

values[~np.isnan(values)].reshape(-1,6)