擅长:python、mysql、java
<p>下面是一种处理文件的相当简单的方法</p>
<p>打开数据文件并遍历其行,将它们存储在列表(缓存)中。如果一行以<code>NAME:</code>开头,则该行是新记录的开头,如果缓存不是空的,则可以打印缓存</p>
<p>如果该行以<code>Num Peaks:</code>开头,则检查该值。如果为零,则缓存被清空,导致此记录被遗忘</p>
<p>跳过仅包含空格的行</p>
<pre><code>with open('data') as f:
line_cache = []
for line in f:
if line.startswith('NAME:'):
if line_cache:
print(*line_cache, sep='')
line_cache = []
elif line.startswith('Num Peaks:'):
num_peaks = int(line.partition(': ')[2])
if num_peaks == 0:
line_cache = []
continue
if line.strip(): # filter empty lines
line_cache.append(line)
if line_cache: # don't forget the last record
print(*line_cache, sep='', end='')
</code></pre>
<p>输出到标准输出。它可以重定向到shell环境中的文件中。如果要直接写入文件,可以在开始时打开它并修改<code>print()</code>语句:</p>
<pre><code>with open('output', 'w') as output, open('data') as f:
...
</code></pre>
<p>并将<code>print()</code>更改为</p>
<pre><code>print(*line_cache, sep='', file=output)
</code></pre>