python基础:json.loads(str)出现错误总结

 1 >>> import json
 2 >>> test="{‘data‘:‘123‘}"
 3 >>> result=json.loads(test)
 4 Traceback (most recent call last):
 5   File "<stdin>", line 1, in <module>
 6   File "d:\Anaconda3\lib\json\__init__.py", line 319, in loads
 7     return _default_decoder.decode(s)
 8   File "d:\Anaconda3\lib\json\decoder.py", line 339, in decode
 9     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
10   File "d:\Anaconda3\lib\json\decoder.py", line 355, in raw_decode
11     obj, end = self.scan_once(s, idx)
12 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:
13  line 1 column 2 (char 1)

原因在于:字符串里用单引号来标识字符。

解决办法如下:将字符串里的单引号替换成双引号

1 >>> import re
2 >>> test=re.sub(‘\‘‘,‘\"‘,test)
3 >>> result=json.loads(test)
4 >>> result[‘data‘]
5 ‘123‘  

对于带u‘的字符串,u也要去掉:

 1 >>> c=f.read()
 2 >>> c
 3 "{u‘meta‘: {u‘code‘: 200, u‘requestId‘: u‘5815f6739fb6b77494061e19‘}, u‘response
 4 ‘: {u‘tips‘: {u‘count‘: 0, u‘items‘: []}}}"
 5 >>> d=re.sub("u‘","\"",c)
 6 >>> d
 7 ‘{"meta\‘: {"code\‘: 200, "requestId\‘: "5815f6739fb6b77494061e19\‘}, "response\
 8 ‘: {"tips\‘: {"count\‘: 0, "items\‘: []}}}‘
 9 >>> d=re.sub("‘","\"",d)
10 >>> d
11 ‘{"meta": {"code": 200, "requestId": "5815f6739fb6b77494061e19"}, "response": {"
12 tips": {"count": 0, "items": []}}}‘
13 >>> json.loads(d)
14 {‘response‘: {‘tips‘: {‘items‘: [], ‘count‘: 0}}, ‘meta‘: {‘requestId‘: ‘5815f67
15 39fb6b77494061e19‘, ‘code‘: 200}}  
时间: 2024-08-13 19:15:17

python基础:json.loads(str)出现错误总结的相关文章

python 解析json loads dumps

编码:把一个Python对象编码转换成Json字符串   json.dumps() 解码:把Json格式字符串解码转换成Python对象   json.loads() 判断是否是json串. import json d='xxxxxxx'try:    d=json.loads(d) print(type(d))except:    print("不是一个合法的json串类型") print("ok!") import json d='{"name&quo

Python 基础 - Json文件读写

JSON介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 在python中,JSON 由列表和字典组成. 序列化的两个模块中,json模块是用于

Python基础-json和pickle模块

一 .序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 把字符串转化成内存数据类型 叫做反序列化 json 和 pickle 二. 只是把数据类型转化成字符串存到内存里的意义 json.dumps  json.loads 1.把你的内存数据通过网络共享给远程其他人 2.定义了不同语言的交互规则 a.纯文本,坏处,不能共享复杂的数据类型 b.xml,坏处,占用空间大 c.json,简单,可读性好 三.json与pickle的区

python中json.loads,dumps,jsonify使用

search_info = {'id':132,'user_role':3} print type(search_info) #输出 <type 'dict'> #转为string用dumps print type(json.dumps(search_info)) #输出 <type 'str'> #string转 dict用 loads() print type(json.loads(json.dumps(search_info))) #输出 <type 'dict'>

Python 基础教程 和 易犯错误(文本处理)

一:基础教程 (1)文件I/O  非常类似于 c语言:IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. spath="D:/download/baa.txt" f=open(spath,"w") # Opens file for writing.Creates this file doesn't exist. f.write(&

【python基础】之str类字符串

str类字符串是不可变对象 1.创建字符串 s1 = str() #创建一个空字符串 s2 = str("hello") #创建字符串"hello" 2.处理字符串的常用函数和操作 (1).函数 len() 返回一个字符串的字符个数 max() 返回字符串中最大的字符 min() 返回字符串中最小的字符 >>>s = "Welcome" >>>len(s) 7 >>>max(s) 'o' &g

关于python读取 json文件 转dict错误问题

晚上到家10点老大突然说有东西解决不了 说python 读取java生成的json文件字符编码 出问题 爬起来开电脑 弄了好久 试过了 with open rb encoding=utf-8等等 还试过了在Linux下尝试 文件强转utf8 以及 在编码一次 encodegbk 然后在编码 encodeutf8 种种都试过了. 发现找问题的方向偏了 最后问同学才知道 重点!!  .json 结尾的 不可以有 注释 有了注释就不是正经的json了 处理方法想到了一种 最笨的拼接字符串 回头微信问老

python基础——字符串(str)

标准序列的常规操作(索引.切片.乘法.成员资格检查.长度等)适用于字符串,但字符串是不可变的数据类型,因此元素赋值和切片赋值是非法的. 这里介绍字符串两个方面:字符串格式设置    字符串方法 1.设置字符串格式(format):基础版 使用字符串格式设置运算符----%,并在%右边指定格式的值.指定要设置其格式的值时,可使用单个值(如字符串,数字等),亦可使用元组(设置多个值)或者字典.       %c  格式化字符及其ASCII码       %f  格式化浮点数字,可指定小数点后的精度

python基础5—文件 | json序列化

下面这些代码没有经过试验, 只是作为代码段作为日后的参考, 这些死的api姑且放在这里用的时候看一下再做总结 import sys print(sys.path) # ---------------文件---------------------------- # 第一种直接方式 file1 = open("test.txt") file2 = open("output.txt", "w") # w 表示 write (覆写) r 表示 read