擅长:python、mysql、java
<p>如果标题行在列名称中没有<em>外部空格</em>,那么可以使用<code>slice</code>内置函数拆分数据行(请注意,我在标题行中添加了一个下划线以规范化列的名称)</p>
<pre><code>In [20]: h = 'col1 col2 col3_text col4\n'
In [21]: r = '1403 bash 2014-07-28 22:32:53 UTC+0000 sudo bash\n'
In [22]: fields = h.split()
...: ifields = [h.index(f) for f in fields]+[None]
In [23]: slices = [slice(i,j) for i, j in zip(ifields, ifields[1:])]
In [24]: tokens = [r[s] for s in slices]
In [25]: tokens
Out[25]:
['1403 ',
'bash ',
'2014-07-28 22:32:53 UTC+0000 ',
'sudo bash\n']
In [26]:
</code></pre>
<p>PS您可能想<code>rstrip</code>个别项目,<code>[r[s].rstrip() for s in slices]</code>。在</p>
<hr/>
<p>附录</p>
<p>如果有可能在有效列名和垃圾之间找到区别,那么可以放宽无外来空间要求。。。重新设置您的特定数据格式(无下划线…)</p>
^{pr2}$