2017-06-30 9 views
0

私はPythonには新しく、リストからJSONを作成してソートし、別のディレクトリから作成したディレクトリに格納する必要があるリスト。別のリストで作成されたディレクトリ内のリストからJSONを作成

- ABC 
- DEF 
- GHI 
- ... 

とlist2のは、次のとおりです:

- ABCabc 
- ABCdef 
- DEFabc 
- GHIabc 
- GHIdef 
- ... 

私はすでに正常LIST1からディレクトリを作成し

はのはLIST1があるとしましょう。 しかし、list2の値を作成する方法が必要です。リスト1のディレクトリでlist1の値で始まる名前はindex.jsonとして始まります。

だから、私が探しているようなものです:これまでのJSONsのための私のコード

{ 
"foobar":[{ 
     "ABC":"ABCabc" 
    }, 
    { 
     "ABC":"ABCdef" 
    }] 
} 

index.jsonの内容がどのように見える
- ABC 
    - index.json 
- DEF 
    - index.json 
- GHI 
    - index.json 
- ... 

if [s for s in result if s.startswith(data_extr2)]: 
    for i in result: 
     try: 
      with io.open(os.path.join("index.json"), 'w', encoding="utf-8") as output: 
       output.write(unicode(json.dumps(result, ensure_ascii=False))) 
     except OSError as exception: 
      if exception.errno != errno.EEXIST: 
       raise 

ここで、data_extr2はlist1、resultはlist2です。事前

+0

あなたの現在の状況が機能していない理由を教えてください。 – NightHallow

+0

スクリプトを開始すると明らかに* something *が処理されますが、最終的には空のindex.jsonが作成されます – HappilyDrunk

答えて

0

乾杯私は私のためにそれが壊れている、だけでなく、あなたのコードを理解していません。ここで

# if statement on a list ? It will return True if the list is not empty 
# bool([]) == False and bool([1]) == True 
# If you want to check if the list is empty, you can use len(results) to return the length of the list. 
if [s for s in result if s.startswith(data_extr2)]: 

# startswith take a string in argument, not a list, it should provoke an error 
s.startswith(data_extr2) 

あなたが望むものをやってコード、私はもちろん、このコードを向上させることができ、それはあなたが理解するのに役立つことを願っていますが、それはあなたに簡単な解決策を示すことです。

import json 

list1 = ['ABC', 'DEF'] 
list2 = ['ABCabc', 'DEFdef'] 

output = {'foobar': []} 

for a in list1: 
    for b in list2: 
     if b.startswith(a): 
      output['foobar'].append({a: b}) 
      continue 

open('index.json', 'w').write(json.dumps(output)) 
+0

jsonという魅力のようなjsonを作成します:) 複数のディレクトリに複数のjsonsが必要でしたが、私自身、とても感謝しています:) – HappilyDrunk

関連する問題