Python处理json格式的数据文件(一些坑、一些疑惑)
这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜。
最近要把以前爬的数据用一下了,先简单的过滤一下,以前用scrapy存数据的时候为了省事也为了用一下它的item exporter,将数据持久化,用了jsonlinesitemexporter,并且导出到一个json文件(现在我有点后悔)。当我读文件,遍历每行,json.loads每行时,没错,惊喜出现了。
def cf_movie():
with open('movies.json', 'r') as fp:
for l in fp:
mj = json.loads(l)
wstr = mj['name']
f.write(wstr.encode('utf-8'))
print 'done'
ValueError: Expecting property name: line 1 column 137 (char 136)
当时就蒙了,难道我导出去json格式,再用json来loads就不行了?不能说我打开文件方式不对吧,而且遍历方式以前一直在用,错误出在loads那里。其实我是有点较真的,导出的文件有TXT格式的,我拿一个试了试,一点错没有。Google百度了一大堆,都是说字符串格式问题,不过这不是我的错,我导出的就是json格式,所以格式不会有错,而且我还专门确认了一下。我表示不服,不过没道理的呀,我试着一行一行读(试几行),可以loads没错。我甚至把遍历文件的三种方式都试了一遍,仍然报错。突然想到当初看scrapy文档时,有讲到json处理大文件不方便,难道是因为我文件是json的问题?我换了一个小的json文件,果然没问题。现在基本确定是json文件大小的问题,不过Python得json模块里没说这个问题。但数据还是要过滤的,我试了一下,我的json文件有大概2万行,设一个flag测读多少行,最高设到8000,9000就报错,然后8500页报错,所以8000是可以的。这样就有一个思路,将文件分解为多个不报错的小文件,然后再解析、过滤。不过我的测试文件才2M左右,我还有400多M的,这样岂不是很刚。想了想我决定先不用这种思路,想到了以前学Python基础的时候无意看到一个函数eval,将字符串转为字典,我的字符串符合字典格式(肯定的),所以我决定用这种方式,目前很流畅,不过前提是你的字符串格式要对。
不过我目前还是没懂为什么loads会报错,用TXT格式文件却不报错,经历了从有想法到放弃,心有疑惑。
Python处理json格式的数据文件(一些坑、一些疑惑)的更多相关文章
- 中文格式python 打印json格式的数据中文显示问题
废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...
- python 将json格式的数据写入csv格式的文件中
# coding=utf-8 import json import csv # 重新进行配置读写数据时的默认编码 import sys reload(sys) sys.setdefaultencodi ...
- python处理json格式的数据
这里我就不介绍json了,不知道json的同学可以去百度一下json,首先我们的json的格式如下,这个json有点长,这个json来自我以前的一个小任务,具体看这里:http://www.cnblo ...
- python将json格式的数据转换成文本格式的数据或sql文件
python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...
- python json格式和csv文件转换
python json格式和csv文件转换 上代码 import csv import json ''' json格式示例 [{ "firstName":"Bill&qu ...
- python中json格式数据输出实现方式
python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...
- python 使用eval() 可以将json格式的数据,转换为原始数据
使用python 自带的函数可以将json 格式的数据(也就是字符串)转换为原始格式的数据, 当使用json.loads()无法将json格式的数据转换为原始数据(存在多层各种格式类型数据的嵌套), ...
- 如何使用python内置的request发送JSON格式的数据
使用步骤如下: 一.如果想发送json格式的数据,需要使用request模块中的Request类来创建对象,作为urlopen函数的参数 二.header中添加content-type为applica ...
- scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据
在安装完scrapy以后,相信大家都会跃跃欲试想定制一个自己的爬虫吧?我也不例外,下面详细记录一下定制一个scrapy工程都需要哪些步骤.如果你还没有安装好scrapy,又或者为scrapy的安装感到 ...
随机推荐
- java中 DigestUtils.md5Hex 的c#实现
C# string target= "央行降息影响楼市:100万20年期房贷月供减少141元"; string result = Md5Helper.Md5Hex(aa); //r ...
- windows电脑优化
电脑磁盘已用99% 100%解决办法_百度经验 禁用superfetch服务 链接:http://jingyan.baidu.com/article/046a7b3edeea38f9c37fa911. ...
- 初步理解JNDI
今天初步学习了jndi的基本原理,主要是 学习了收藏中的一篇博文,讲的很好,现在记录一下自己的理解. 其实jndi就和jdbc很相似, 我们希望通过相同的jdbc api来访问不同的数据库,就必须提供 ...
- Python scipy.sparse矩阵使用方法
本文以csr_matrix为例来说明sparse矩阵的使用方法,其他类型的sparse矩阵可以参考https://docs.scipy.org/doc/scipy/reference/sparse.h ...
- quartz学习
quartz是一个作业调度框架,用于指定工作(作业)在指定时间执行——定时工作. quartz的核心接口有: Scheduler接口:Scheduler是job的执行对象,用于工作的执行. Job接口 ...
- modelsim无法识别include文件的解决方法
modelsim发现include关联的文件编译报语法错误,文件名需要写绝对路径,即使这个文件和工程其它文件在一个目录上.例如只写成 `include "c0_ddr3_model_para ...
- 从H264码流中获取视频宽高 (SPS帧) 升级篇
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...
- oracle分页查询sql
select * from( select shopid,rownum rn from p_shopinfo where is_hot=1 and rownum <=6 order by sho ...
- 如何取消MSSQL自带智能提示步骤,使用第三方智能提示插件
步骤1如下: [工具]——[选项]——[文本编辑器]——[Transact-SQL]——[IntelliSense]——[Transact-SQL IntelliSense 设置]——(取消选择)—— ...
- GUI的搭建,windowbuilder的使用
在进行GUI的搭建过程中,相信很多人对于一个图标的设置感觉写起来很麻烦,需要不断的添加,而在java中有一个windowbuilder窗口可以很好的帮助我们进行GUI的搭建 1.进入eclipse的页 ...