<p>使用以下方法:</p>
<pre><code>with open('yourlogfile', 'r') as log:
lines = log.read()
result = re.sub(r'^\[ (\S+) *(\S+) *(\d+): *(\d+) *([A-Z]+)\/(\S+) \]\n([^\n]+)\n?',
r'\1 \2 \3 \4 \5 \6 \7', lines, flags=re.MULTILINE)
print(result)
</code></pre>
<p>输出:</p>
<pre><code>06-15 14:07:48.377 15012 15012 D ViewRootImpl ViewPostImeInputStage processKey 0
06-15 14:07:48.397 3539 4649 D AudioService active stream is 0x8
06-15 14:07:48.407 4277 4293 D vol.VolumeDialogControl.VC isSafeVolumeDialogShowing : false
</code></pre>
<hr/>
<p>要将结果作为匹配项列表,请使用<code>re.findall()</code>函数:</p>
<pre><code>...
result = re.findall(r'^\[ (\S+) *(\S+) *(\d+): *(\d+) *([A-Z]+)\/(\S+) \]\n([^\n]+)\n?', lines, flags=re.MULTILINE)
print(result)
</code></pre>
<p>输出:</p>
<pre><code>[('06-15', '14:07:48.377', '15012', '15012', 'D', 'ViewRootImpl', 'ViewPostImeInputStage processKey 0'), ('06-15', '14:07:48.397', '3539', '4649', 'D', 'AudioService', 'active stream is 0x8'), ('06-15', '14:07:48.407', '4277', '4293', 'D', 'vol.VolumeDialogControl.VC', 'isSafeVolumeDialogShowing : false')]
</code></pre>