【问题标题】:Loading json data from file in python从python中的文件加载json数据
【发布时间】:2017-06-01 22:24:24
【问题描述】:

我正在使用以下代码从网页保存数据:

[...]
response = urllib2.urlopen(req)
the_page = response.read()
data_to_analyse = json.loads(the_page)
import datetime
datafile = open(str(datetime.datetime.now())+'_data.json','w')
datafile.write(str(data_to_analyse))
[...]

现在我尝试处理保存在数据文件中的数据,但我无法正确处理 json。

数据文件开始示例部分

{
    u'SiteRep': {
                  u'DV': {
                           u'type': u'Obs', 
                           u'dataDate': u'2016-11-18T10:00:00Z', 
                           u'Location': [
                                            {
                                                u'elevation': u'15.0',
                                                u'name': u'BALTASOUND',
                                                u'i': u'3002'
[and so on - file closes correct...]

在我可以简单地处理“data_to_analysis”之前:

for SiteRep in data_to_analyse:
    for data_to_analyse_experience in data_to_analyse[SiteRep]:

一切正常。现在我收到错误:

**TypeError:** string indices must be integers, not str

如果我尝试使用该代码从文件中加载数据:

for datafile in os.listdir('.'):
    if datafile.endswith('.json'):
        data = open(datafile,'r').read()

        jsondata = json.dumps(data)

或:

**ValueError:** Expecting property name: line 1 column 2 (char 1)

与:

        jsondata = json.loads(data)

如何将文件转换成正确的json对象?

【问题讨论】:

    标签: python json file load


    【解决方案1】:

    试试这个

    import json
    
    with open('strings.json') as json_data:
     d = json.load(json_data)
     print(d)
    

    【讨论】:

    • 结果是:ValueError: Expecting property name: line 1 column 2 (char 1)
    • 您可能希望用 try catch 包装您的 json.load 行,因为无效的 JSON 会导致堆栈跟踪错误消息。
    【解决方案2】:

    其实JSON ValueError: Expecting property name: line 1 column 2 (char 1)通过以下方式解决了问题:

        data_to_analyse = open(datafile,'r').read()
        data_to_analyse = data_to_analyse.replace("'",'"')
        data_to_analyse = data_to_analyse.replace("u\"",'"')
        jsondata = json.loads(data_to_analyse)
    

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 1970-01-01
      • 2017-01-06
      • 2012-02-28
      • 1970-01-01
      • 2018-05-11
      • 2020-02-28
      • 2013-08-28
      • 2012-06-10
      相关资源
      最近更新 更多