2017-02-02 3 views
0

pythonで辞書にファイルを解析する簡単な方法を探しています。私は、ファイルを編集し、私は興味がない行をすべて削除した場合区切り記号の有無にかかわらず、Python辞書にファイルを読む

Not of interest 
Key1=Value1 
Not of interest 
Key2=Value2 
Key3=Value3 

、私は次のコマンドを実行することができます。ファイルは、次のようのない関心と、いくつかの値を持ついくつかの、ラインの束を持っています:

>>> dict(item.split("=") for item in open("testfile")) 
{'Key3': 'Value3\n', 'Key2': 'Value2\n', 'Key1': 'Value1\n'} 

しかし、私の他の行は、次の取得と:

>>> dict(item.split("=") for item in open("testfile")) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: dictionary update sequence element #0 has length 1; 2 is required 

私はジュースで新しいリストを作成し、これを達成する一つの方法は、リストにファイル全体を読み込むことであろう考えていました興味深い行を探して、そのリストに対して上記のコマンドを実行します。

私は本当にありがとう、誰もが最高のアプローチについてコメントすることができます。

答えて

3

inキーワードを使用している行に=があるかどうかを確認する必要があります。

dict(item.split("=") for item in open("testfile") if "=" in item) 
+0

ありがとうございます、それは自分の試みよりもよかったです! – user3611658

0

は、だから私は出ている最高です:

>>> import re 
>>> file = open("test").readlines() 
>>> dict(item.split("=") for item in [line for line in file if re.match('.*=.*', line)]) 
{'Key3': 'Value3\n', 'Key2': 'Value2\n', 'Key1': 'Value1\n'} 
>>>> 

良い方法があるかどうか私はまだフィードバックを歓迎したいが、そうでない場合はうまくいけば、それが誰かに使用のためです!

クリス

関連する問題