如何使用 python 读取 excel 单元格中的文本并替换为 json 输出中的其他值?

How to read the text in excel cell and replace with someother value in json output using python?

我的 python 代码读取 excel sheet 并将其转换为 json 文件输出。我在 excel sheet 中有一列,其中的值是 "Planned" 或 "Unplanned"。

1) 在 json 输出中,我希望将 Planned 替换为“1”,将 Unplanned 替换为“2”,而不更改 excel 文件中的任何内容。 2)在输出中我不想 "data" 出现。 3)在excel中,我的开始时间列值是这样的“2018-11-1608:00:00”。我希望输出为“2018-11-16T08:00:00Z”。目前我得到了一些垃圾价值。 下面是我的代码。

import xlrd, json, time, pytz, requests
from os import sys
from datetime import datetime, timedelta
from collections import OrderedDict

def json_from_excel():
    excel_file = 'test.xlsx'
    jsonfile = open('ExceltoJSON.json', 'w')
    data = []
    datestr = str(datetime.now().date())
    loaddata = OrderedDict()

    workbook = xlrd.open_workbook(excel_file)
    worksheet = workbook.sheet_by_name('OMS-GX Data Extraction')
    sheet = workbook.sheet_by_index(0)

for j in range(0, 6):
    for i in range(1, 40):
        temp = {}
        temp["requestedStart"] = (sheet.cell_value(i,0))      #Start Time
        temp["requestedComplete"] = (sheet.cell_value(i, 1))  #End Time
        temp["location"] = (sheet.cell_value(i, 3))           #Station
        temp["equipment"] = (sheet.cell_value(i, 4))          #Device Name
        temp["switchOrderTypeID"] = (sheet.cell_value(i, 5))  #Outage Type
        data.append(temp)
        loaddata['data'] = data



    json.dump(loaddata, jsonfile, indent=3, sort_keys=False)
    jsonfile.write('\n')
    return loaddata



 if __name__ == '__main__':
    data = json_from_excel()

下面是我的示例输出:

 {
   "data": [
      {
         "requestedStart": testtime,
         "requestedComplete": testtime,
         "location": "testlocation",
         "equipment": "testequipment",
         "switchOrderTypeID": "Planned"
      },
      {
         "requestedStart": testtime,
         "requestedComplete": testtime,
         "location": "testlocation",
         "equipment": "testequipment",
         "switchOrderTypeID": "Unplanned"
      }
   ]
}

第一个问题的答案: 您可以使用条件赋值。

temp["switchOrderTypeID"] = (1 if sheet.cell_value(i, 5) == "Planned" else 0)

第二题答案: 使用 loaddata = data 这将是 json 的数组,没有 data 作为 json 键。

第 3 个问题的答案:

from dateutil.parser import parse t = "2018-11-16 08:00:00" parse(t).strftime("%Y-%m-%dT%H:%M:%SZ")