回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在运行一个实用程序来解析<code>df</code>命令的输出。我捕获输出并将其发送到解析器。下面是一个示例:</p>
<pre><code>Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk2 1996082176 430874208 1564695968 22% 2429281 4292537998 0% /
devfs 668 668 0 100% 1156 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
</code></pre>
<p>函数如下:</p>
^{pr2}$
<p>但是我得到了以下输出:</p>
<pre><code>['/dev/disk2', '1996082176', '430876480', '1564693696', '22%', '2429288', '4292537991', '0%', '/']
['devfs', '668', '668', '0', '100%', '1156', '0', '100%', '/dev']
['map', '-hosts', '0', '0', '0', '100%', '0', '0', '100%', '/net']
['map', 'auto_home', '0', '0', '0', '100%', '0', '0', '100%', '/home']
</code></pre>
<p>问题是<code>map -host</code>应该是单个元素(对于<code>Filesystem</code>列)。
我尝试应用regex <code>tokens = re.split(r'\s{2,}', line)</code>,但结果仍然不正确:</p>
<pre><code>['/dev/disk2', '1996082176 430869352 1564700824', '22% 2429289 4292537990', '0%', '/']
</code></pre>
<p>解析输出的正确方法是什么?在</p>