2017-09-18 6 views
-2

私は.txtファイルを持っているし、多くのテキストとそのロードされたが、2-3の間の段落で、辞書のようなテキストがあります:だから私は読み込まれるファイル全体を行うと、すべての'key2'をつかむことを望むものlineがディクショナリタイプかどうかを確認してデータを印刷しますか?

somerandomtextinthisline 
{"key1":"value1","key2":"value2"} 
somerandomtextinthislineblasd 
asbdjalsdnlasd 
dasdjasdkjn 
<space> 

{"key1":"value1","key2":"value2"} 
someranomtextaganinasdlasd 
asdasd 

そのファイルから「result.txt」というファイルに貼り付けます。

どうすればこのコードを作成できますか?

+0

これは家族のサイトです。言語を見てください。 – larsks

+0

'json.loads'を使ってすべての行をデコードしようと思うように見えます。もしそれが動作し、結果が辞書であれば、あなたは金色です。 – larsks

+0

これは家族サイトであり、不自由なサイトではありません。 –

答えて

2

使用ast.literal_eval辞書に変換する(可能な場合)と解析された行が'key2'を使用してインデックスを作成することが可能かどうかを確認するには:

import ast 

with open(filename) as fin: 
    for line in fin: 
     try: 
      parsed = ast.literal_eval(line) 
      key2 = parsed['key2'] 
     except Exception: 
      continue 
     print(key2) # I just print it here, you probably need to write it to another file instead 
0

あなたはファイル内の辞書を一致させるために正規表現を使用することができます。

import re 
import ast 
data = [i.strip('\n') for i in open('filename.txt')] 
final_dicts = list(map(ast.literal_eval, [re.sub("\s+", '', i) for i in data if re.findall('\{.*?:.*?,*\}', re.sub("\s+", '', i))])) 
関連する問題