通常,我使用python来读取csv文件,其结构如下:
date1, value1_1, value1_2, value1_3, ...
date2, value2_1, value2_2, value2_3, ...
...
在这种情况下,一行是一段数据,我只是使用numpy.loadtxt()来读取它们。
但是今天,我的同事给了我一个块结构的文件,看起来像是:
date1
value1_1, value1_2
value1_3, ...
date2
...
这让我很头疼......
有没有人对此有任何好的解决方案?有没有我可以用来处理这个文件的函数,还是我必须自己写一个reading_messed_files()
函数?
答案 0 :(得分:2)
这不是一个完整的答案,但有点长的评论。
AttributeConverter
csv读者如numpy
和loadtxt
接受任何可迭代的输入。虽然它通常是一个文件名,它打开并逐行读取,但它也可以是行列表,或者一次返回一行的生成器。
因此,您可以打开文件,逐行阅读,将块重新修改为普通genfromtxt
行,然后将其传递给csv
。
我记得使用它来读取多个文件(具有相同的列),跳过行或读取块的示例。此外,示例处理行以替换笨拙的分隔符。
我经常使用从cut-n-paste示例派生的行列表来演示loadtxt
。
我想的是:
loadtxt