python转json多了换行符_在Python中打开没有换行符的大型JSON文件以进行csv转换Python 2.6.6...

我正在尝试将非常大的json文件转换为csv。我已经能够将这种类型的小文件转换为10条记录(例如)csv文件。但是,当尝试转换大文件(csv文件中的50000行的数量)时,它不起作用。数据是通过curl命令创建的,其中-

o指向要创建的json文件。输出的文件中没有换行符。csv文件将使用csv.DictWriter()编写,并且(其中数据是json文件输入)的格式为

rowcount = len(data['MainKey'])

colcount = len(data['MainKey'][0]['Fields'])

然后,我遍历行和列的范围以获取csv词典条目

csvkey = data['MainKey'][recno]['Fields'][colno]['name']

cvsval = data['MainKey'][recno][['Fields'][colno]['Values']['value']

我尝试使用其他问题的答案,但它们不适用于大文件(du -m bigfile.json = 157),而我要处理的文件更大。

尝试获取每行的大小将显示

myfile = open('file.json','r').

line = readline():

print len(line)

显示这将读取整个文件为完整字符串。因此,一个小文件将显示67744的长度,而大文件将显示163815116。

尝试直接从中读取数据

data=json.load(infile)

给出其他问题针对大文件讨论的错误

尝试使用

def json_parse(self, fileobj, decoder=JSONDecoder(), buffersize=2048):

yield results

如另一个答案所示,该文件适用于72 kb的文件(10行22列),但似乎对于中等大小的157

mb文件来说是锁定的或占用无数时间(来自du -m bigfile.json)

请注意,调试打印显示默认输入参数指定的每个块的大小为2048。似乎它试图遍历2048个块中的整个163815116(如上面的len所示)。如果将块大小更改为32768,则简单的数学计算表明,循环需要5,000个周期来处理文件。

更改为524288的块大小后,大约每11个块都会退出循环,但仍应占用大约312个块来处理整个文件

如果我可以将其停在每个行项目的末尾,则可以处理该行并将其发送到基于以下所示形式的csv文件。

小文件上的vi显示它的形式

{"MainKey":[{"Fields":[{"Value": {'value':val}, 'name':'valname'}, {'Value': {'value':val}, 'name':'valname'}}], (other keys)},{'Fields' ... }] (other keys on MainKey level) }

我无法使用ijson,因为我必须为无法导入其他软件的系统进行设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值