<p>如果您不理解regexp,并且不愿意学习它们,就不要使用它们。如果没有它们,这是很容易解析的。你知道吗</p>
<p>要分析的第一行是:</p>
<pre><code>"Line 3: Port #: 12; Type: 5000AX-FG;\n"
</code></pre>
<p>在英语中,您要做的是:</p>
<ul>
<li>把换行符从行尾去掉。你知道吗</li>
<li>在每一行空白处将行拆分为单词。你知道吗</li>
<li>最后一句话。你知道吗</li>
<li>把分号去掉。你知道吗</li>
</ul>
<p>很明显,您可以重新排列它们,将其中一些组合成一个步骤,等等,但是让我们直接将其转换为Python:</p>
<pre><code>if i == 2:
line = line.rstrip() # 'Line 3: Port #: 12; Type: 5000AX-FG;'
words = line.split() # ['Line', '3:', 'Port', '#:', '12;', 'Type:', '5000AX-FG;']
last_word = line[-1] # '5000AX-FG;'
part_type = last_word.rstrip(';') # '5000AX-FG'
print part_type
</code></pre>
<hr/>
<p>如果你想变得更聪明一点,注意线条中的图案,并用它们来分割。例如,在这一行以及所有类似的行中:</p>
<pre><code>Line 66: Duration: 11 hrs 48.0 min. Total Elapsed Time: 16 hrs 35.6 min.
</code></pre>
<p>它们都以<code>"Line NN: "</code>开头。之后,会有一个或多个键值对,这些键值对之间用句点和可选空格分隔,每个键值之间用冒号和可选空格分隔。所以:</p>
<ul>
<li>去掉后面的换行符。你知道吗</li>
<li>剥去<code>"Line NN: "</code>部分。你知道吗</li>
<li>在<code>'.'</code>上拆分</li>
<li>对于每个组件:
<ul>
<li>在<code>:</code>周围正好分成两块。你知道吗</li>
<li>去掉这两块纸上多余的空白。你知道吗</li>
<li>如果该键与您要查找的键匹配,则该值就是您想要的值。你知道吗</li>
</ul></li>
</ul>
<p>你可以进一步推广它,把所有的键值对做一个dict,然后你就可以在dict中查找你想要的一个</p>
<p>例如:</p>
<pre><code>def parse_line(line):
line = line.rstrip()
line = line.partition(':')[-1]
parts = line.split('.')
mapping = {}
for part in parts:
key, _, value = part.partition(':')
mapping[key.strip()] = value.strip()
return mapping
</code></pre>
<p>现在:</p>
<pre><code>if i == 65:
mapping = parse_line(line)
print mapping['Duration']
</code></pre>