python如何读取具有块结构的文件
通常,我使用python读取csv文件,其结构如下所示:python如何读取具有块结构的文件,python,numpy,Python,Numpy,通常,我使用python读取csv文件,其结构如下所示: date1, value1_1, value1_2, value1_3, ... date2, value2_1, value2_2, value2_3, ... ... date1 value1_1, value1_2 value1_3, ... date2 ... 在本例中,一行是一段数据,我只使用numpy.loadtxt()读取它们 但是今天,我的同事给了我一个块结构的文件,它看起来像: date1, value1_1, va
date1, value1_1, value1_2, value1_3, ...
date2, value2_1, value2_2, value2_3, ...
...
date1
value1_1, value1_2
value1_3, ...
date2
...
在本例中,一行是一段数据,我只使用numpy.loadtxt()读取它们
但是今天,我的同事给了我一个块结构的文件,它看起来像:
date1, value1_1, value1_2, value1_3, ...
date2, value2_1, value2_2, value2_3, ...
...
date1
value1_1, value1_2
value1_3, ...
date2
...
这让我头疼
有人有什么好的解决办法吗?有没有一个函数我可以用来处理这个文件,或者我必须自己编写一个
读取混乱的文件()
numpy
csv阅读器,如loadtxt
和genfromtxt
接受任何iterable作为输入。通常,它是一个文件名,可以逐行打开和读取,也可以是一个行列表,或者是一次返回一行的生成器
因此,您可以打开文件,逐行读取,将块重新编辑为正常的csv
行,并将它们传递到loadtxt
我记得一些例子使用它来读取多个文件(具有相同的列)、跳过行或读取块。另外,示例处理这些行以替换笨拙的分隔符
我经常使用从剪切粘贴示例派生的行列表来演示loadtxt
我在想这样的事情:
def foo(afile):
header=None
for line in afile:
strings = line.split(delimiter)
if len(strings)==1:
header = strings[0]
else:
line = delimiter.join([header]+strings)
yield line
with open(filename) as f:
A = np.loadtxt(foo(f),....)
在源代码处修复此问题可能更容易,并询问您的同事是否可以给您一个标准的csv格式文件。这些字符串仍然是以行分隔的字符串吗?有什么结构吗?如果没有一个合适的例子来说明这个文件的样子,我们就无法猜测如何解析它。第二个文件是以行分隔的字符串。在csv情况下,每行包含一个完整的数据段,而在第二个文件中,第1、2和3行的组合是一个完整的数据段