Python 3.x 加载列不相等的文本文件

Python 3.x 加载列不相等的文本文件,python-3.x,file,numpy,text,Python 3.x,File,Numpy,Text,我有一个包含非结构化数据的文本文件。该文件包含150k行,如 M Jackson 1 $ F Fiza 1 $ M Aaro

我有一个包含非结构化数据的文本文件。该文件包含150k行,如

M  Jackson                              1                                             $
F  Fiza                                 1                                             $
M  Aaro                                          41                                   $
M  Micheal                      226 4   2   211                               6       $
第一列是性别信息,第二列是姓名,第三列可以有1个或多个数字,用空格分隔,表示此人可能属于的国家。每个国家都有一个代码。符号$是行的结尾

我必须把数据放到numpy数组中。当我将文本的行扫描到数组时,它显示错误,因为它的列不相等

data = np.loadtxt(filename, dtype= 'str', delimiter = ' ')
在这种情况下,如何将数据扫描到阵列中?空格也不是常数,但数字是用空格分隔的。
对于我的数据,第一行有3个值,第四行有6列。之后,我将空列设置为零,使其列数相等,并进行特征提取

numpy加载程序不能很好地处理丢失的数据。但在genfromtxt中,可以指定字段宽度

In [103]: txt = """one 2 3
     ...: two   4 5
     ...: """.splitlines()


In [105]: np.genfromtxt(txt, delimiter=[3,2,2,2])
Out[105]: 
array([[nan,  2.,  3., nan],
       [nan, nan,  4.,  5.]])

In [109]: np.genfromtxt(txt, delimiter=[3,2,2,2],dtype=str,encoding=None)
Out[109]: 
array([['one', ' 2', ' 3', ''],
       ['two', '  ', ' 4', ' 5']], dtype='<U3')