错误是:
In [67]: np.recfromtxt('stack40765849.txt', delimiter=';', dtype=str)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-67-eab6d3192d4d> in <module>()
----> 1 np.recfromtxt('stack40765849.txt', delimiter=';', dtype=str)
/usr/lib/python3/dist-packages/numpy/lib/npyio.py in recfromtxt(fname, **kwargs)
1949 kwargs.setdefault("dtype", None)
1950 usemask = kwargs.get('usemask', False)
-> 1951 output = genfromtxt(fname, **kwargs)
1952 if usemask:
1953 from numpy.ma.mrecords import MaskedRecords
...
ValueError: Some errors were detected !
Line #2 (got 4 columns instead of 3)
(注意,recfromtxt 使用的是genfromtxt,这已经讨论了很多。
问题不在于字符串的长度;它与分隔符的数量有关。第一行(标题?)有 2,建议您需要 3 列或字段。但第 2 行有 3 个;额外的可能是文本的一部分。
识别字段名称的第一行会产生相同的错误。
np.recfromtxt('stack40765849.txt', delimiter=';', dtype=str,names=True)
pandas 将其加载为:
In [74]: data=pandas.read_csv('stack40765849.txt',delimiter=';')
In [75]: data
Out[75]:
Name Birthdate \
John 1990 Lorem ipsum dolor sit amet, consectetur adipi...
Biography
John Quae diligentissime contra Aristonem dicuntur...
它没有给出错误,但它看起来不正确。
===================
如果我把文中的;改成.
In [82]: np.genfromtxt('stack40765849_1.txt', delimiter=';', dtype=None,names=Tr
...: ue)
Out[82]:
array((b'John', 1990, b' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Hanc ergo intuens debet institutum illud quasi signum absolvere. Scrupulum, inquam, abeunti. Quae diligentissime contra Aristonem dicuntur a Chryippo. Quo tandem modo?'),
dtype=[('Name', 'S4'), ('Birthdate', '<i4'), ('Biography', 'S225')])
我得到一个包含 3 个字段的结构化数组(几乎像一个 recarray);最后一个很长 - 全文。 (b'...' 表示 Py3 中的字节字符串;不会出现在 Py2 显示中。)
pandas 产生类似的东西:
In [83]: data=pandas.read_csv('stack40765849_1.txt',delimiter=';')
In [84]: data
Out[84]:
Name Birthdate Biography
0 John 1990 Lorem ipsum dolor sit amet, consectetur adipi...
正确的 Py3 unicode 加载:
In [91]: np.recfromtxt('stack40765849_1.txt', delimiter=';', dtype='U4,i,U255',n
...: ames=True)
Out[91]:
rec.array(('John', 1990, ' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Hanc ergo intuens debet institutum illud quasi signum absolvere. Scrupulum, inquam, abeunti. Quae diligentissime contra Aristonem dicuntur a Chryippo. Quo tandem modo?'),
dtype=[('Name', '<U4'), ('Birthdate', '<i4'), ('Biography', '<U255')])
In [92]: