2011-11-08 14 views
0

ファイル内のキー(辞書)を対応する値に置き換えるときに問題が発生しました。詳細:キーを値に置き換えて新しいファイルに書き込むPython

{'EVENT23595': ['36.9828 -34.0538 138.1554'], 'EVENT2594': ['41.2669 -33.0179 139.2269'], 'EVENT2595': ['4.7500 -32.7926 138.1523'], 'EVENT41025': ['16.2453 -32.9552 138.2604'], 'EVENT2646': ['5.5949 -32.4923 138.1866'], 'EVENT2649': ['7.9533 -31.8304 138.6966']} 

私はで終わるしたいのですがどのような、新しいファイルです:

EVENT2593 
EVENT2594 
EVENT2595 

EVENT41025 
EVENT2646 
EVENT2649 

はまた、reloc_event_coords_dic()によって作成された私の辞書は、次のようになります。入力ファイルは次のようになりますevent_from_picksと呼ばれますキーの代わりに値を使用します。この場合、receiver.inと呼ばれる新しいファイルは次のようになりますどの:

36.9828 -34.0538 138.1554 
41.2669 -33.0179 139.2269 
4.7500 -32.7926 138.1523 
16.2453 -32.9552 138.2604 
5.5949 -32.4923 138.1866 
7.9533 -31.8304 138.6966 

私の間違った機能(私はループに問題を持っている必要がありますが、私は何を把握することはできません知っている)今のところは以下のとおりです。

def converted_lines(): 
    file_out = open ('receiver.in', 'w') 
    converted_lines = [] 
    event_dict = reloc_event_coords_dic() 
    data_line = event_dict.items() # Takes data as('EVENT31933', ['10.1230 -32.8294 138.1718']) 
    for element in data_line: 
     for item in element: 
      event_number = element[0] # Gets event number 
      coord_line = event_dict.get (event_number, None) 
    with open ('event_from_picks', 'r') as file_in: 
     for line in file_in: 
      if line.startswith(" "): 
       continue 
      if event_number: 
       converted_lines.append ("%s" % coord_line) 
     file_out.writelines(converted_lines) 

読んでいただきありがとうございます!

答えて

0

だけで次のようにします。

with open('receiver.in', 'w') as f: 
    f.writelines([v[0] for v in reloc_event_coords_dic().itervalues()]) 
+0

これはどのように役立ちますか? – eikonal

+0

ああ、申し訳ありませんが、どうやってあなたの質問を間違って読むことができたのか分かりません。私の答えを修正しました。 – Kimvais

0

あなたの最初のループは、ちょうどcoord_line変数に最後のペアを残します。

ベター

event_dict = reloc_event_coords_dic() 
with open ('event_from_picks', 'r') as file_in: 
    with open('receiver.in', 'w') as file_out: 
     for in_line in file_in: 
      file_out.writelines(event_dict[in_line.strip()]) 

行う(未テストをしていますが、ロジックを取得する必要があります)。

+0

@Kimvais noneああ、彼らは働いています。おそらく私の質問は明らかではありませんが、私は 'event_from_picks'(私の辞書のキー)を 'event_from_picks'と同じ順番を維持している同じ辞書の対応する値に置き換えたいだけです。何かが明確でない場合は、私に知らせてください... – eikonal

関連する問題