关于 python:python – 解析编码的 json 文件 – 期望用双引号括起来的属性名称 | 珊瑚贝

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/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?