python – parse encoded json file – Expecting property name enclosed in double quotes
我需要解析的一个 json 文件似乎已编码,并且代码失败并出现错误:
ValueError:期望用双引号括起来的属性名称:第 2 行第 3 列(字符 4)
我的问题是,如何转换/加载 json?
json 中的单引号或双引号有区别吗?
查找/替换单引号到双引号和 Unicode 字符 u 以解析 json 是一个很好的解决方案吗?
json:
|
1
2 3 4 5 6 |
{
‘data’: [ {‘ad_id’: u‘372900’, ‘adset_id’: u‘72900’, ‘campaign_id’: u‘363200’, ‘created_time’: u‘2016-03-08’}, {‘ad_id’: u‘372900’, ‘adset_id’: u‘72900’, ‘campaign_id’: u‘363200’, ‘created_time’: u‘2016-03-08’} ] } |
代码片段:
|
1
2 3 4 5 |
import json
import pprint with open(‘leads.json’) as data_file: data = json.load(data_file) pprint(data) |
- 那不是一个 json 文件,它是一个 python 模块。你是从哪里弄来的?
- 我把它作为从 facebook 解析的数据示例,但我不知道它是如何解析的。对我来说,这也是一种奇怪的格式,而且处理起来很混乱。
问题在于 json 需要双引号将字符串括起来。您有单引号(和 python unicode 标记,例如 u’372900′)。所以你的文件不是有效的json。不过,您仍然可以解析它。在文件内容上尝试 ast.literal_eval 看看是否有效。
|
1
2 3 |
import ast
with open(‘leads.json’) as data_file: data = ast.literal_eval(data_file.read()) |
- @PadraicCunningham 我认为literal_eval 可以评估这样的多行文字表达式
- 谢谢,由于我的输入数据采用这种格式并且似乎被编码为 Windows-1252,是否可以将其编码/转换为 utf-8 格式?
来源:https://www.codenong.com/35927313/
