2015-06-19 55 views
2

我有一个文件,其中包含类似于下面显示的示例的信息。我想知道是否有一种方法可以使用python读取此文件并将其用作json。我知道如何打开它并处理文本,但有没有其他方法?使用python读取文件为json的替代方法

例子:

key={{name='foo', etc..},{},{},{}} 
+0

你在那里没有有效的Python和JSON语法。 –

+0

我知道该语法不是有效的JSON或Python。我试图找到一种使用Python将日期转换为JSON或Dictionary的方式。任何一个都可以。 – crisis

+0

如果可能,我宁愿不使用ast。如果有人遇到过这个问题,并有解决方案,我将不胜感激。谢谢 – crisis

回答

1

如果你想为JSON,你需要有一个有效的JSON语法来对待您的内容:

{"key":[{"name": "foo"},{},{},{}]} 

然后你可以使用JSON库将其转换为一个字典:

>>> import json 
>>> json.loads('{"key":[{"name": "foo"},{},{},{}]}') 
{u'key': [{u'name': u'foo'}, {}, {}, {}]} 

此外,如果您的文件内容无法更改为正确的json语法,那么你将需要为你的具体情况开发一个解析器。

+0

感谢您的回答。我将开始分析器的工作,因为除非我想在本地复制文件并执行文本操作,否则转换为JSON不是一种选择。我将不得不试验一下,哪一个更节省时间。 – crisis

0

搜索几种不同的语言后,我能够确定数据结构是一个Lua容器。我发现了一个简单的lua-python解析器,当前可以在这里找到github.com/SirAnthony/slpp,并且我能够解析(解码)lua数据结构。下面是使用slpp.py解析lua容器的例子,我希望这可以帮助任何有类似问题的人。

>>> from slpp import slpp as lua 
>>> data = lua.decode('{ array = { 65, 23, 5 }, dict = { string = "value", array = { 3, 6, 4}, mixed = { 43, 54.3, false, string = "value", 9 } } }') 
>>> print data 

{ '阵列':[65,23,5], '字典':{ '混合':{0:43,1:54.33,2:假,4:9中, '字符串': 'value'},'array':[3,6,4],'string':'value'}}