代码之家  ›  专栏  ›  技术社区  ›  CDNthe2nd

Python-使用不同的.json文件,并且能够用更少的数据代码来完成它[附件]

  •  0
  • CDNthe2nd  · 技术社区  · 7 年前

    什么是最有效/使用较少的代码 data[attach.] .json来自以下代码:

    with open('slack.json') as slackAttachment:
           data = json.load(slackAttachment)
    
    with open('slack2.json') as slackAttachment:
           data2 = json.load(slackAttachment)
    
    with open('slack3.json') as slackAttachment:
           data3 = json.load(slackAttachment)
    
    with open('slack4.json') as slackAttachment:
           data4 = json.load(slackAttachment)
    
    
    data["attachments"][0]["title"] = country  
    
    itemname = item.get('Title', {})
    if itemname: 
        newitemword = item['seoTitle']
        data["attachments"][0]["text"] = "" + newitemword + ""
    
    else:
    
        data["attachments"][0]["fields"].append({
        "value": '*Item name not found*',
        "short": True,
    })
    

    此外,不仅有这两个数据[“附件”][0],而且大约有xx个。

    基本上我不想做的是:

     data["attachments"][0]["text"] = "" + newitemword + ""
     data2["attachments"][0]["text"] = "" + newitemword + ""
     data3["attachments"][0]["text"] = "" + newitemword + ""
     data4["attachments"][0]["text"] = "" + newitemword + ""
    

    我想知道是否还有其他有效的方法可以用比上面代码更少的代码来解决这个问题,并且仍然能够使用所有这些slacks.json作为自己的代码?

    编辑:

    webhook0 = 'HELLO'
    webhook1 = 'WORLD
    webhook2 = 'STACK'
    
    
           data = {}
    
    
                        file_numbers = range(0, 3)  # I assume the numbers are from 1 to 4, but you can change this.
                        for file_number in file_numbers:  # go overf file numbers
                            file_name = 'slack' + str(file_number) + '.json'  # create file name from number
                            with open(file_name) as slackAttachment:
                                data[file_number] = (json.load(slackAttachment))  # append file json to data list
                            webhook_number = 'webhook' + str(file_number)
    
                        print(webhook_number)
    
                        # data is now complete
                        # you can use data[file_number] to access the corresponding json
    
                        for file_number in file_numbers:
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Bruno Lubascher    7 年前

    您可以将所有数据存储到一个 dict .

    data = {}
    
    file_numbers = range(1, 5) # I assume the numbers are from 1 to 4, but you can change this.
    for file_number in file_numbers: # go overf file numbers
        file_name = 'slack' + str(file_number) + '.json' # create file name from number
    
        with open(file_name) as slackAttachment:
            data[file_number] = (json.load(slackAttachment)) # append file json to data list
    
    # data is now complete
    # you can use data[file_number] to access the corresponding json
    
    for file_number in file_numbers:
    
        data[file_number]["attachments"][0]["title"] = country
    
        itemname = item.get('Title', {})
        if itemname:
            newitemword = item['seoTitle']
            data[file_number]["attachments"][0]["text"] = "" + newitemword + ""
    
        else:
    
            data[file_number]["attachments"][0]["fields"].append({
                "value": '*Item name not found*',
                "short": True,
            })
    

    每次您想访问文件的数据时,都要使用 data[<file_number>] .

    所以要进入第一个 slack.json 你用 data[0]