python 处理非标准 json 格式字符串

在Python爬虫中,经常遇到非标准的JSON格式数据,特别是key未用单引号包裹的情况。文章介绍了如何解析这类字符串,推荐使用demjson库,通过`pip install demjson`安装后,能有效解决这类问题。
摘要由CSDN通过智能技术生成

在写爬虫的时候,会发现很多数据都是通过 json 格式进行传输的,标准的 json 我们可以将其转化为 Python 中的数据类型,进行查询,但对于一些类似于 json 但又非标准 json 格式的字符,就会比较头疼了,这里统计一些咱遇到的非标准的 json 格式,及相应的解析方法。

字符串中 key 的值没有被单引号包裹

这里写图片描述

类似于这种字符,看上去格式和 json 很像(眼尖的朋友可能发现了,这是 qq 的数据 嘿嘿),但仔细观察会发现,这其中的 key 没有被单引号包裹起来,这就导致了它无法被简单的解析为字典类型,因为解析的时候 key 会被解析成相应的变量而非字符,这些变量又都没有定义,所以会报错。

那怎么办呢?咱的第一反应是利用正则去人为构造成标准的格式,不过这个难度系数有点大,对正则的要求挺高,还费脑子,明显不符合咱的风格。于是咱就去网上找了一下,有没有现成的方法,还真有呢:

  • 使用 demjson

    首先安装 demjson

    pip install demjson


                
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Pythonjson模块是用于解析和序列化JSON(JavaScript Object Notation)数据的标准库。JSON是一种轻量级的数据交换格式,常用于Web应用程序中的数据传输和存储。 使用json模块,可以轻松地将Python对象(如字典、列表、元组、字符串等)转换为JSON格式字符串,并将JSON格式字符串转换回Python对象。以下是一些常见的json模块函数: 1. json.dumps(obj):将Python对象转换为JSON格式字符串。 2. json.loads(json_str):将JSON格式字符串转换为Python对象。 3. json.dump(obj, fp):将Python对象写入JSON格式的文件。 4. json.load(fp):从JSON格式的文件中读取Python对象。 下面是一个简单的例子,展示了如何使用json模块将Python对象转换为JSON格式字符串: ```python import json data = { "name": "Bob", "age": 30, "city": "New York" } json_str = json.dumps(data) print(json_str) # 输出:{"name": "Bob", "age": 30, "city": "New York"} ``` 同样,下面的例子展示了如何将JSON格式字符串转换回Python对象: ```python import json json_str = '{"name": "Bob", "age": 30, "city": "New York"}' data = json.loads(json_str) print(data) # 输出:{'name': 'Bob', 'age': 30, 'city': 'New York'} ``` 需要注意的是,json模块默认使用ASCII编码来处理数据。如果要处理ASCII字符,可以使用`ensure_ascii`参数。例如: ```python import json data = { "name": "李雷", "age": 30, "city": "北京" } json_str = json.dumps(data, ensure_ascii=False) print(json_str) # 输出:{"name": "李雷", "age": 30, "city": "北京"} ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值