文件 TEST.txt 的结构如下:
a 45
b 45 55
c 66
当我尝试打开它时:
import numpy as np
a= np.loadtxt(r'TEST.txt',delimiter='\t',dtype=str)
我收到以下错误:
ValueError:第 2 行的列数错误
这显然是由于第二行有三列而不是两列,但我无法使用文档找到我的问题的答案。
无论如何我可以修复它,将所有数据保存到一个数组中吗?
在 Matlab 中,我可以做类似的事情:
a=textscan(fopen('TEST.txt'),'%s%s%s');
Python 中类似的东西会受到赞赏。
原文由 G M 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试
np.genfromtxt
。它处理缺失值;loadtxt
没有。比较他们的文档。当分隔符是空格时,缺失值可能会很棘手,但使用制表符应该没问题。如果还有问题,用
,
分隔符测试一下。哎呀 - 你仍然需要额外的分隔符
例如。
loadtxt
和genfromtxt
都接受逐行传递 txt 的任何迭代。所以一个简单的事情是readlines
,调整具有缺失值和分隔符的行,并将该行列表传递给加载程序。或者你可以把它写成一个“过滤器”或生成器。这种方法已在许多先前的 SO 问题中进行了描述。我使用的是 Python3,因此字节字符串标有“b”(用于婴儿和我)。
对于字符串,这太过分了;但是
genfromtxt
可以很容易地为每列构造一个具有不同数据类型的结构化数组。请注意,这样的数组是 1d,具有命名字段 - 而不是编号列。填充行我可以定义一个函数,如:
并将其用作: