2013-02-22 43 views
3

我有具有像數據的文本文件(new.txt):顯示在字典格式的文本文件數據

{ 
    "String1": { 
     "Value1": {"One":"a","Two":"b","Three":"c"}, 
     "Value2": {"One":"aa","Two":"bb","Three":"cc"}, 
     } 

    "String2": { 
     "Value1": {"One":"a1","Two":"b1","Three":"c1"}, 
     "Value2": {"One":"aa1","Two":"bb1","Three":"cc1"}, 
     } 
} 

我想顯示的值: 字符串1,值1也就是{「一「:」 一」, 「二」: 「b」, 「三」: 「C」} String2的,值2,另一種是 「AA1」

我怎樣才能顯示它..

+1

在'}'後面的第5行中,應該有一個逗號。 – eumiro 2013-02-22 12:57:21

回答

3
import ast 
with open('new.txt') as f: 
    d = ast.literal_eval(f.read()) 
print d['String2']['Value2']['One'] 
+0

有沒有其他方法可以做到這一點? – 2013-02-22 12:54:11

+1

@SuryaGupta - 帶'eval',但你不想使用它。 – eumiro 2013-02-22 12:55:47

+1

@eumiro:數據既不是有效的json或有效的Python對象形式 – Abhijit 2013-02-22 12:56:27

1

它看起來像JSON,但缺少一些重要的東西 部分。與下面相比,缺少一些「,」的。它是否複製new.txt粘貼或手動格式錯誤?

{ 
    "String2": { 
     "Value2": { 
      "Three": "cc1", 
      "Two": "bb1", 
      "One": "aa1" 
     }, 
     "Value1": { 
      "Three": "c1", 
      "Two": "b1", 
      "One": "a1" 
     } 
    }, 
    "String1": { 
     "Value2": { 
      "Three": "cc", 
      "Two": "bb", 
      "One": "aa" 
     }, 
     "Value1": { 
      "Three": "c", 
      "Two": "b", 
      "One": "a" 
     } 
    } 
} 

如果它應該是JSON,它很容易與Python處理:在eumiro答案

import json 
with open('new.txt') as f: 
    myjson = json.loads(f.read()) 
print myjson['String2']['Value2']['One'] 

AST進口看起來非常漂亮,但。

相關問題