<p>在python中,您正在寻找的等效方法是<a href="http://docs.python.org/2/library/stdtypes.html#str.split" rel="nofollow">str.split()</a>,它不带任何参数来拆分空格上的字符串。它还将处理任何尾随的换行符/空格,并且在VB示例中,您不需要关心数据宽度。你知道吗</p>
<p><strong>示例</p>
<pre><code>with open("data.txt") as fin:
data = map(str.split, fin) #Split each line of data on white-spaces
data = zip(*data) #Transpose the Data
</code></pre>
<p>但是,如果有带空格的列,则需要根据列位置拆分数据</p>
<pre><code>>>> def split_on_width(data, pos):
if pos[-1] != len(data):
pos = pos + (len(data), )
indexes = zip(pos, pos[1:]) #Create an index pair with current start and
#end as next start
return [data[start: end].strip() for start, end in indexes] #Slice the data using
#the indexes
>>> def trynum(n):
try:
return int(n)
except ValueError:
pass
try:
return float(n)
except ValueError:
return n
>>> pos
(0, 5, 13, 22, 36)
>>> with open("test.txt") as fin:
data = (split_on_width(data.strip(), pos) for data in fin)
data = [[trynum(n) for n in row] for row in zip(*data)]
>>> data
[[-1234, -5356, -90], [56, 9, 12], [32452, 546, 2345], [68584.4, 12434.5, 43522.1], ['Extra_data', 'Extra_data', 'Extra_data']]
</code></pre>