最も簡単な方法ですが、最も効率的ではありません (特に長いファイルの場合) は、ファイル全体を書き直すことです。
これを行うには、2 番目のファイル ハンドルを開いて各行を書き換えます。ただし、ヘッダーの場合は、解析済みのヘッダーを記述します。例えば、
fr = open('/home/name/db/str/dir/numbers/str.phy')
fw = open('/home/name/db/str/dir/numbers/str.phy.parsed', 'w') # Name this whatever makes sense
for line in fr:
if line.startswith('ENS'):
linepars = re.sub ('ENS([A-Z]+)0+([0-9]{6})','\\1\\2',line)
fw.write(linepars)
else:
fw.write(line)
fw.close()
fr.close()
編集:これは を使用しないことに注意してくださいreadlines()
。そのため、メモリ効率が高くなります。また、すべての出力行を保存するのではなく、一度に 1 行だけ保存し、すぐにファイルに書き込みます。
クールなトリックとしてwith
、入力ファイルでステートメントを使用して、ファイルを閉じる必要がないようにすることができます (Python 2.5+):
fw = open('/home/name/db/str/dir/numbers/str.phy.parsed', 'w') # Name this whatever makes sense
with open('/home/name/db/str/dir/numbers/str.phy') as fr:
for line in fr:
if line.startswith('ENS'):
linepars = re.sub ('ENS([A-Z]+)0+([0-9]{6})','\\1\\2',line)
fw.write(linepars)
else:
fw.write(line)
fw.close()
PSようこそ:-)