这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜。

最近要把以前爬的数据用一下了,先简单的过滤一下,以前用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格式的数据文件(一些坑、一些疑惑)的更多相关文章

  1. 中文格式python 打印json格式的数据中文显示问题

    废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...

  2. python 将json格式的数据写入csv格式的文件中

    # coding=utf-8 import json import csv # 重新进行配置读写数据时的默认编码 import sys reload(sys) sys.setdefaultencodi ...

  3. python处理json格式的数据

    这里我就不介绍json了,不知道json的同学可以去百度一下json,首先我们的json的格式如下,这个json有点长,这个json来自我以前的一个小任务,具体看这里:http://www.cnblo ...

  4. python将json格式的数据转换成文本格式的数据或sql文件

    python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...

  5. python json格式和csv文件转换

    python json格式和csv文件转换 上代码 import csv import json ''' json格式示例 [{ "firstName":"Bill&qu ...

  6. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  7. python 使用eval() 可以将json格式的数据,转换为原始数据

    使用python 自带的函数可以将json 格式的数据(也就是字符串)转换为原始格式的数据, 当使用json.loads()无法将json格式的数据转换为原始数据(存在多层各种格式类型数据的嵌套), ...

  8. 如何使用python内置的request发送JSON格式的数据

    使用步骤如下: 一.如果想发送json格式的数据,需要使用request模块中的Request类来创建对象,作为urlopen函数的参数 二.header中添加content-type为applica ...

  9. scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据

    在安装完scrapy以后,相信大家都会跃跃欲试想定制一个自己的爬虫吧?我也不例外,下面详细记录一下定制一个scrapy工程都需要哪些步骤.如果你还没有安装好scrapy,又或者为scrapy的安装感到 ...

随机推荐

  1. opengl

    基于OpenGL ES的GLfixed类型使用 OpenGL ES中引入了GLfixed类型.这个类型一般被定义为int,32位.高16位表示整数部分,低16位表示小数部分.由于其整数部分和小数部分所 ...

  2. Canvas画图在360浏览器中跑偏的问题

    问题描述,canvas画图的js代码中编写的是画正方形的代码,结果在360浏览器上变成了长方形,不知道怎么回事,请问各位大神是否遇到过此类问题? <!DOCTYPE html> <h ...

  3. 使用HTML5新支持的搭建WebRtc环境来作为视频通讯

    发现如果再重新设计这块的话,又会有不同的思路.对于可定位能力,我们可以全息日志采集,将每个用户在整个系统的走向异步的抓取下来,再同步到专门的日志分析系统,在这个系统中可以根据用户号码.订单号进行过滤分 ...

  4. 用贝赛尔曲线把图片, 按钮, label 绘成圆 或圆角矩形

    //创建圆形遮罩,把用户头像变成圆形 /* *CGPointMake(35, 35)  是绘图的中心点,  如果想把控件居中绘圆, 一般用控件的中心点,   radius 是圆半径   startAn ...

  5. Spring Web应用的最大瑕疵

    众所周知, 现在的Spring框架已经成为构建企业级Java应用事实上的标准了,众多的企业项目都构建在Spring项目及其子项目之上,特别是Java Web项目,很多都使用了Spring并且遵循着We ...

  6. XtraBackup安装

    1.从官网下载XtraBackup2.4.4. percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm 2.安装依赖包 yum -y install perl per ...

  7. sql 多行合一行

    sql多行合并成一行 sql server SELECT [activityId], --STUFF( (SELECT ',' + Cast(A.phone AS varchar) FROM aaa ...

  8. 在simplescalar中添加基于PISA架构的指令

    用sim-safe工具进行模拟.最近看代码的一点点心得记录一下. sim-safe工具:不检查所有指令错误,检查内存对齐和所有内存操作的内存访问权限 程序从main.c的main()函数中进入 int ...

  9. MySQL出现Access denied for user 'root'@'%' to database 'netai_test'问题

    访问数据库时报错信息 Access denied for user 'root'@'%' to database 'netai_test' 原因:这是由于创建数据库后没有对用户授权,使用户可以访问数据 ...

  10. Struts——(四)异常处理机制

    在通常的情况下,我们得到异常以后,需要将页面导航到一个错误提示的页面,提示错误信息.利用Stuts我们可以采用两种方式处理异常: 1.编程式异常处理 即我们在Action中调用业务逻辑层对象的方法时, ...