2016-04-11 10 views
0

file1.txtの行を別のfile2.txtのキーで置き換えようとしています。あるファイルの行を別のファイルのキーで置き換える - python

rs176444 
    rs89902222 
    rs474784 
    . 
    . 
    . 

は、私は彼らのSNP番号をFILE2.TXTの内容を交換したい

FILE1.TXT

 SNP_A-43344 rs176444 
     SNP_A-53343 rs2345 
     SNP_A-57574 rs89902222 
      .   . 
      .   . 
      .   . 
     SNP_A-47474 rs474784 
      .   . 
      .   . 
      .   . 

とFILE2.TXT:私は、次の形式で2つのテキストファイルを持っていますそのfile2.txtは次のようになります:

 SNP_A-43344 
     SNP_A-57574 
     SNP_A-47474 
      . 
      . 
      . 

私はいくつかの例をオンラインで見ましたが、わかりませんでる。下のコードを変更していますが、元のファイルのエントリを変更するだけです。

 import re 
     with open('file1.txt','r') as f: 
      data1=dict(line.split() for line in f) 
     with open('file2.txt') as f: 
      data2=f.read() 
     data2=re.sub(pattern,SNPnumber,data2) 

私はre.subのパターンとSNPnumberエントリを使いました。これは正しいアプローチですか、私はこれを完全に間違っていますか?私はPythonの初心者です。あなたに私にいくつかの提案をしたり、私をソースに導くことができれば感謝します。ありがとう!

+0

は、SNP数がFILE1.TXTでユニークです?? – Hackaholic

+0

はいSNP番号はユニークです –

+0

はrs ....ですもユニークですか? – Hackaholic

答えて

0

これを試してみてください:

my_dict = {} 
with open("file1.txt") as f: 
    for line in f: 
     value, key = line.strip().split() # taking rs... as key and SNP-.. as value 
     my_dict[key] = value 

rs_values = open("file2.txt").readlines() 

with open("file2.txt", "w") as f: 
    for x in rs_values: 
     f.write(my_dict[x.strip()] + "\n") 
+0

私はエラーが発生しました:f.write(my_dict [x] + "\ n") KeyError: 'SNP_A-1819635 \ trs17642438 \ n' –

+0

my_dictの内容を印刷し、キー値のペア – Hackaholic

+0

を参照してください。 'SNP_A-1987912'、 'rs911114': 'SNP_A-2226006'、 'rs458744': 'SNP_A-8341206'など... –

関連する問題