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

最近要把以前爬的数据用一下了,先简单的过滤一下,以前用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. ndoutils2.2.0(ndo2db)中文乱码问题解决

    ndoutils插入中文时,产生数据库乱码请用下面两个文件: 适用版本:ndoutils-2.0.0 数据库初始化mysql.sql: 修改ndoutils-2.0.0/src目录中的db.c ndo ...

  2. LeetCode 214 Shortest Palindrome

    214-Shortest Palindrome Given a string S, you are allowed to convert it to a palindrome by adding ch ...

  3. 第13章 .NET应用程序配置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  4. 利用Service bus中的queue中转消息

    有需求就有对策就有市场. 由于公司global的policy,导致对公司外发邮件的service必须要绑定到固定的ip地址,所以别的程序需要调用发邮件程序时,问题就来了,如何在azure上跨servi ...

  5. 全基因组关联分析(Genome-Wide Association Study,GWAS)流程

    全基因组关联分析流程: 一.准备plink文件 1.准备PED文件 PED文件有六列,六列内容如下: Family ID Individual ID Paternal ID Maternal ID S ...

  6. [刘阳Java]_JVM工作流程_第4讲

    程序员写好一段Java源程序-->编译-->字节码-->JVM-->硬件平台(操作系统)

  7. 模拟器报Installation error: INSTALL_FAILED_CONTAINER_ERROR解决方法

    今天刚刚导入了一个项目,但是多次导入,始终有错误,解决不了.第一次是我导入项目之后,项目前边有红色叉号,但是项目里面却没有错误标志.重新打开Eclipse,方解决了这个问题.但是,在模拟器上运行,却始 ...

  8. 浅谈rem、em、px

    1.px:像素(Pixel) px是相对长度单位,他是相对于显示器屏幕分辨率而言的 优点:比较稳定.精确 缺点:在浏览器 中放大或者缩小浏览页面,会出现页面混乱的情况. 如下例子: .buttonPX ...

  9. a 标签提交前验证

    最近在做验证的时候遇到了submit()与onsubmit()事件冲突的问题,本来想在a标签中添加submit()进行表单的提交,然后在 form中添加onsubmit事件触发验证方法.结果行不通,最 ...

  10. AngularJs自定义指令详解(9) - terminal

    例子: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8 ...