python处理文件中有多个json对象_Python:尝试反序列化文件中的多个JSON对象,每个对象跨越多个但行距一致的行...

好吧,经过将近一个星期的研究,我将向大家介绍一下。我有一个看起来如下的文本文件(以3个单独的json对象为例,但其中有50K):

{

"zipcode":"00544",

"current":{"canwc":null,"cig":7000,"class":"observation"},

"triggers":[178,30,176,103,179,112,21,20,48,7,50,40,57]

}

{

"zipcode":"00601",

"current":{"canwc":null,"cig":null,"class":"observation"},

"triggers":[12,23,34,28,100]

}

{

"zipcode":"00602",

"current":{"canwc":null,"cig":null,"class":"observation"},

"triggers":[13,85,43,101,38,31]

}

我知道如何使用Python

json库处理JSON对象,但是我在如何通过读取文件创建5万个不同的json对象方面遇到了挑战。(也许我什至没有考虑正确,但最终我需要反序列化并加载到数据库中)我尝试过itertools认为自己需要一个生成器,因此可以使用:

with open(file) as f:

for line in itertools.islice(f, 0, 7): #since every 7 lines is a json object

jfile = json.load(line)

但是以上内容显然不起作用,因为它没有将7行作为单个json对象读取,而且我也不确定如何在整个文件上进行迭代并加载单个json对象。

以下将给我列出我可以切片的列表:

list(open(file))[:7]

任何帮助将非常感激。

非常接近我的需求,我认为实际上只有一步之遥,但仍然在迭代方面有点挣扎。最终,这将为我提供所有数据帧的迭代打印输出,但是我如何做到这一点,以便我可以捕获所有基本连接在一起的巨型数据帧?然后,我可以将最终的数据帧导出到csv等中。(还有比将它首先创建一个巨大的数据帧更好的方法将此结果上传到数据库中吗?)

def lines_per_n(f, n):

for line in f:

yield ''.join(chain([line], itertools.islice(f, n - 1)))

def flatten(jfile):

for k, v in jfile.items():

if isinstance(v, list):

jfile[k] = ','.join(v)

elif isinstance(v, dict):

for kk, vv in v.items():

jfile['%s' % (kk)] = vv

del jfile[k]

return jfile

with open('deadzips.json') as f:

for chunk in lines_per_n(f, 7):

try:

jfile = json.loads(chunk)

pd.DataFrame(flatten(jfile).items())

except ValueError, e:

pass

else:

pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值