<h2>解决方案</h2>
<p>这适用于给定的示例:</p>
<pre><code>with open('file01.txt') as fobj1, open('file02.txt') as fobj2:
data1 = fobj1.readlines()
data2 = fobj2.readline()
code = data2.split('|', 1)[0]
with open('file01.txt', 'w') as fobj_out:
for line in data1:
if line.split('|', 1)[0] == code:
fobj_out.write(data2 + '\n')
else:
fobj_out.write(line)
</code></pre>
<h2>一步一步地</h2>
<p>我们打开两个文件进行读取:</p>
<pre><code>with open('file01.txt') as fobj1, open('file02.txt') as fobj2:
data1 = fobj1.readlines()
data2 = fobj2.readline()
</code></pre>
<p>读取的数据如下所示:</p>
<pre><code>>> data1
['101|10075.0|12|24/12/2015\n', '102|1083.33|12|24/12/2015']
>> data2
'101|False|Section06'
</code></pre>
<p>我们只需要来自<code>file02.txt</code>的代码:</p>
<pre><code>>>> code = data2.split('|', 1)[0]
code
'101'
</code></pre>
<p><code>data2.split('|', 1)</code>在<code>|</code>处分裂。因为我们只需要一次分裂,我们可以用<code>1</code>来限制它。你知道吗</p>
<p>现在我们再次打开<code>file01.txt</code>。这次写:</p>
<pre><code>with open('file01.txt', 'w') as fobj_out:
for line in data1:
if line.split('|', 1)[0] == code:
fobj_out.write(data2 + '\n')
else:
fobj_out.write(line)
</code></pre>
<p>这一行<code>if line.split('|', 1)[0] == code:</code>执行与上面相同的拆分,但对<code>file01.txt</code>的所有行都执行。如果代码等于来自<code>file02.txt</code>的代码,我们使用来自<code>file02.txt</code>的行,否则我们只写回<code>file01.txt</code>的行形式。你知道吗</p>