2011-08-19 108 views
-1

我有一個文件,該文件JSON語句看起來像這樣免費JSON解析器(蟒蛇)

20110812 09:00:00:012000 INFO - #JSON{"name": "YMean", "args": {"timestamp": "1313157600012", "YMean": "[15770.064851138422] 

。我需要一個Python解析器來解析由這種JSON語句組成的整個文件。任何建議什麼是最有用和最容易使用的? 謝謝

+5

請通過點擊最近一個選擇的複選框來顯示對方您所提出的問題。你現在問了__問題_而不接受一個答案。回過頭去接受對你們每個老問題最有幫助的答案,而且人們會在未來給你更好的答案! – agf

+3

@推薦您在個人資料頁面上提出所有問題:http://stackoverflow.com/users/869986/trup,您可以輸入問題並將其標記爲從那裏回答。 –

回答

3

你最好的賭注可能是官方的Python JSON庫。看看docs看看如何解析你的JSON數據,這是非常有據可查的。

0
>>> import json 
>>> corpus = '''20110812 09:00:00:012000 INFO - #JSON{"name": "YMean", "args": {"timestamp": "1313157600012", "YMean": "[15770.064851138422]"}}''' 
>>> junk, data = corpus.split("#JSON") 
>>> json.loads(data) 
{u'args': {u'timestamp': u'1313157600012', u'YMean': u'[15770.064851138422]'}, u'name': u'YMean'} 
+1

'[json.dumps(line.split('#JSON',1)[1])for line in file('foo')]'? – SingleNegationElimination

+0

使用'load'而不是'loads'從文件而不是字符串讀取。 (你無法猜測'loads'中的'''代表什麼意思。)@TokenMacGuy如果每一行都是一個單獨的JSON對象,那麼肯定;但通常該文件實際上是單個JSON數組。 –

+0

我認爲TMG意在使用'加載'(將JSON轉換爲Python對象),而不是「轉儲」(將Python對象轉換爲JSON字符串)。 –

0

你的例子似乎並不是一個json語句。您似乎有一個日誌文件,其中(某些?)日誌消息恰好包含json。你會發現沒有處理這個json解析器,只是因爲它不是json。因此,您需要逐一處理這些行並提取json部分(請參閱TokenMacGuy的答案以獲取簡單的解決方案),然後使用stdlib的json模塊。