2009-08-13 10 views
1

以下のファイルには、 '.1'という3回の出現があります。最後のファイルを削除して残りのファイルを新しいファイルに書きたい。親切にも、PYTHONでそれをやり遂げる方法を提案してくれてありがとう。Pythonでファイルの一部を削除します

d1dlwa_のA.1.1.1(:)原虫/細菌ヘモグロビン{繊毛虫(ゾウリムシ)TAXID:5885]}ファイルは、はるかに、あまりにもすさまじく巨大ない場合 slfeqlggqaavqavtaqfyaniqadatvatffngidmpnqtnktaaf​​lcaalggpnawt

+0

はそれが宿題ですか? –

答えて

7

最も簡単なアプローチは次のとおりです。

f = open('oldfile', 'r') 
data = f.read() 
f.close() 

data = data.replace('.1.1.1', '.1.1') 

f = open('newfile', 'w') 
f.write(data) 
f.close() 

ファイルが恐ろしいほど大きければ、それを読んで断片的に書く必要があります。例えば、各ラインはあまりにも恐ろしく巨大されていない場合:

inf = open('oldfile', 'r') 
ouf = open('newfile', 'w') 
for line in inf: 
    line = line.replace('.1.1.1', '.1.1') 
    ouf.write(line) 
ouf.close() 
inf.close() 
+0

クイック、ポイントまで。 – hughdbrown

+0

data = data.replace( '。1.1.1'、 '.1.1')ではなく、最後の '.1'を削除するために正規表現を使用することができます。 インポートre data = re.sub( '\ .1 \>'、 ''、data) –

+0

@スティーブ、確かに、必要ならば、あらゆる種類の複雑なことができます。 Python REsでは、 "r> ... '、' \> 'は使用できません(これは_vi_の単語境界です) REs; Pythonではr '\ b']、そして最後にあなたのコードを修復すると、最後のものだけでなく、.1 'の3つの出現がすべて削除されます。それを簡単に保つことは非常にお勧めです。 –

0

あなたはこのような何か持つことができます。


line = line.split(" ") 
line[0] = line[0][0:line[0].rindex(".")] 
print " ".join(line) 

ないきれいなコードを、私のコンソールのテストから、それが動作します。

+0

Thansk for help –

4

任意のサイズのファイルで動作します:

open('newfile', 'w').writelines(line.replace('.1.1.1', '.1.1') 
           for line in open('oldfile'))