2017-09-12 25 views
1

コマンドラインから次の形式で出力を返すシステムがあります。私はこれを解析し、Pythonでdictに変換しようとしています。デリミタはコマンド全体で ":"で、 "\ n"でテキストを分割してさらに ":"で分割し、それをdictに追加し続けますが、キーは一意ですがここではうまくいきますコードのコマンド出力ブロックが繰り返される。だから、誰が私が構文解析して、辞書の中のすべての値を取得すべきか分からない。 ここまでの長さは、コードの繰り返しブロックです。 dictやリストの中にdictを持つことができますが、どのように繰り返すかはわかりません。Pythonのテキスト解析を繰り返し実行する

for d in res.split("\n"): 
    r = d.split(':') 
    if len(r) == 2: 
     return_dict[r[0].strip()]=r[1].strip() 
    else: 
     continue 

ここでは、ジョブデータが上書きされ、最後の値しかありません。どの点も本当に親切になるでしょう。

の名:ジョン 姓:マシュー 合計:10 最終コスト:7000 時間:2017年9月12日 結果:あなたは重複したキーを保持したい場合は、あなたを

jobs pending : 2 
    jobs completed : 4 

     job  : 0 
     ID    : 42 

       name   : filter_pre 
       type : zzsbcfdcd 
       length  : 750 

       name   : gasVacume 
       type : adfadfadkfj 
       length  : 8567 

     job  : 100 
     ID    : 43 

       name   : filter 
       type : adfadf 
       length  : 800 


     job  : 100 
     ID    : 15 

       name   : csprt 
       type : adfa 
       length  : 1000 
+1

可能な複製(https://stackoverflow.com/questions/10664856/make-dictionary-with-duplicate-keys-in-python)HTTPSの – kaza

+1

重複: //stackoverflow.com/questions/10664856/make-dictionary-with-duplicate-keys-in-python – kaza

答えて

0

を渡します辞書のリストを作成する必要があります。以下のコードでコードを変更してください。 [Pythonで重複キーを持つ辞書を作る]の

final_list = [] 
for d in res.split("\n"): 
    return_dict = {} 
    r = d.split(':') 
    if len(r) == 2: 
     return_dict[r[0].strip()]=r[1].strip() 
     final_list.append(return_dict) 
    else: 
     continue 
print final_list 
関連する問題