2011-08-19 54 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模块。