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

最近要把以前爬的数据用一下了,先简单的过滤一下,以前用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. HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用

    你好,这个属性主要是设置浏览器优先使用什么模式来渲染页面的.常见写法如下:<meta http-equiv="X-UA-Compatible" content="I ...

  2. PDF的信息表达原理及特点分析

    一.PDF概述 PDF(Portable Document Format)是一种结构化的文档格式.它由美国著名排版与图像处理软件Adobe公司于1993年首次发布(1.0版),并于同年推出了其相应的支 ...

  3. Python+Google Geocoding

    本文主要介绍使用Python调用Google Geocoding API进行地址到地理坐标的转换. Google Geocoding参考https://developers.google.com/ma ...

  4. 协同开发中SVN的使用建议

    协同开发中SVN的使用建议 1.  注意个人账户密码安全 各员工需牢记各自的账户和密码,不得向他人透漏,严禁使用他人账户进行SVN各项操作(主要考虑每个SVN账号的使用者的权限范围问题).如有忘记,请 ...

  5. 邮箱验证 各种邮箱的smtp

    常见邮箱的SMTP设置 QQ 邮箱举例:(地址test@qq.com)(账号test)(密码***)(SMTP服务smtp.qq.com)(端口25)(注意:请手动开通SMTP功能,通过网页登录qq邮 ...

  6. 仿东软OA协同办公服务管理系统

    兼容IE6,7,8以上.GooleChrome.360及遨游等浏览器.系统特色:1.系统经过抗压测试.2.语音提示功能.3.支持office2007在线编辑.4.强大的图形化工作流程设计及文档编辑留痕 ...

  7. cocos2dx中常见设计模式

    1.单例设计模式:导演类 2.观察者模式: 被观察者含有一个数组,里边存放了所有观察者的引用,在被观察者的状态发生改变的时候,通过调用观察者的函数来通知观察者,实现了信息的传递.  事件监听器:就是采 ...

  8. php 随记

    1. 删除数组里面为空的元素 $arr = [ '1', '0', '', '[]', 'false', 'true', ' ' ]; //以以上的数组为例 $codes = array_filter ...

  9. (转载)持续集成(第二版)[来自:Martin Fowler]

    转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...

  10. 一天一经典Reducing the Dimensionality of Data with Neural Networks [Science2006]

    别看本文没有几页纸,本着把经典的文多读几遍的想法,把它彩印出来看,没想到效果很好,比在屏幕上看着舒服.若用蓝色的笔圈出重点,这篇文章中几乎要全蓝.字字珠玑. Reducing the Dimensio ...