擅长:python、mysql、java
<p>我假设您希望按以下要求处理每个块的txt文件块:</p>
<ul>
<li>块的第一行有前缀<code>TI -</code></li>
<li>最后一行只有<code>ER -</code></li>
<li>块可以包含前缀为<code>A1 -</code>或<code>T1 -</code>的行</li>
<li>一个块包含的每个前缀不应超过一行。你知道吗</li>
</ul>
<p>可以使用条件变量构造dict。假设fd是文件对象或行列表:</p>
<pre><code>inbloc = False
for line in fd:
if inbloc:
if line.startswith('A1 -'):
if 'A1' in bloc:
inbloc = False
else:
bloc['A1'] = line[5:].strip()
elif line.startswith('T1 -'):
if 'T1' in bloc:
inbloc = False
else:
bloc['T1'] = line[5:].strip()
elif line.strip() == 'ER -':
# process bloc
print (bloc)
else:
inbloc = False
elif line.startswith('TY -'):
bloc = { 'TY' : line[5:].strip() }
</code></pre>
<p>使用<code>sample</code>字符串作为输入,可以得到:</p>
<pre><code>{'A1': 'Peter', 'T1': 'Something', 'TY': 'RPRT2'}
{'A1': 'Peter2', 'T1': 'Something else', 'TY': 'RPRT3'}
{'A1': 'Peter3', 'T1': 'Similar', 'TY': 'RPRT4'}
</code></pre>