擅长:python、mysql、java
<p>numpy模块有一个函数可以实现这一点(见最后一行):</p>
<pre><code>import numpy as np
path = "<insert file path here>/infotable.txt"
# read off column locations from a text editor.
# I used Notepad++ to do that.
column_locations = np.array([1, 38, 52, 61, 70, 78, 98, 111, 120, 127, 132])
# My text editor starts counting at 1, while numpy starts at 0. Fixing that:
column_locations = column_locations - 1
# Get column widths
widths = column_locations[1:] - column_locations[:-1]
data = np.genfromtxt(path, dtype=None, delimiter=widths, autostrip=True)
</code></pre>
<p>根据具体的用例,您可以使用不同的方法来获得列宽,但是您得到了这个想法。<code>dtype=None</code>确保numpy为您确定数据类型;这与省略<code>dtype</code>参数非常不同。最后,<code>autostrip=True</code>去掉前导空格和尾随空格。在</p>
<p>输出(<code>data</code>)是<a href="https://docs.scipy.org/doc/numpy/user/basics.rec.html" rel="nofollow noreferrer">structured array</a>。在</p>