<p>我有一个文本文件,如下所示:</p>
<pre><code>blah blah
foo1 bar1
foo1 bar2
foo1 bar3
foo2 bar4
foo2 bar5
blah blah
</code></pre>
<p>现在我想在<code>'foo1 bar3'</code>和<code>'foo2 bar4'</code>之间插入<code>'foo bar'</code>。</p>
<p>我就是这样做的:</p>
<pre><code>import shutil
txt = '1.txt'
tmptxt = '1.txt.tmp'
with open(tmptxt, 'w') as outfile:
with open(txt, 'r') as infile:
flag = 0
for line in infile:
if not line.startswith('foo1') and flag == 0:
outfile.write(line)
continue
if line.startswith('foo1') and flag == 0:
flag = 1
outfile.write(line)
continue
if line.startswith('foo1') and flag == 1:
outfile.write(line)
continue
if not line.startswith('foo1') and flag == 1:
outfile.write('foo bar\n')
outfile.write(line)
flag = 2
continue
if not line.startswith('foo1') and flag == 2:
outfile.write(line)
continue
shutil.move(tmptxt, txt)
</code></pre>
<p>这对我有用,但看起来很难看。</p>
<p>改编Alex Martelli的例子:</p>
<pre><code>import fileinput
for line in fileinput.input('1.txt', inplace=1):
print line,
if line.startswith('foo1 bar3'):
print 'foo bar'
</code></pre>