首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python2.7中从文本文件中提取一行中包含的N个JSON对象?

在Python2.7中从文本文件中提取一行中包含的N个JSON对象?
EN

Stack Overflow用户
提问于 2018-06-14 06:16:26
回答 1查看 30关注 0票数 1

我有一个巨大的文本文件,其中包含几个JSON对象,我希望将其解析为csv文件。仅仅因为我在处理别人的数据,我就不能真正改变它的交付格式。

因为我不知道有多少对象JSON对象,所以我只能创建几个字典,将它们包装在一个列表中,然后对列表执行json.loads()操作。

此外,由于所有对象都在单个文本行中,我不能使用正则表达式来分隔每个单独的json对象,然后将它们放在一个列表中(这是一个超级复杂的json,有时甚至是三重嵌套的json。

下面是我当前的代码

代码语言:javascript
复制
def json_to_csv(text_file_name,desired_csv_name):
    #Cleans up a bit of the text file
    file = fileinput.FileInput(text_file_name, inplace=True)
    ile = fileinput.FileInput(text_file_name, inplace=True)
    for line in file:
        sys.stdout.write(line.replace(u'\'', u'"'))
    for line in ile:
        sys.stdout.write(re.sub(r'("[\s\w]*)"([\s\w]*")', r"\1\2", line))
    #try to load the text file to content var
    with open(text_file_name, "rb") as fin:
        content = json.load(fin)
        #Rest of the logic using the json data in content
        #that uses it for the desired csv format

这段代码给出了一个ValueError: Extra data: line 1 column 159816,因为那里有多个对象。

我在谷歌和StackOverflow上看到了类似的问题。但这些解决方案都没有,因为这只是一个文本文件中的一行很长的代码,我不知道文件中有多少个对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 07:08:29

如果你想拆分最高级别的花括号,你可以这样做

代码语言:javascript
复制
string = '{"NextToken": {"value": "...'
objects = eval("[" + string + "]")

然后解析列表中的每一项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50847058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档