Как прочитать текст в ячейке Excel и заменить на другое значение в выводе json, используя python? - PullRequest
0 голосов
/ 02 апреля 2019

Мой код на Python читает лист Excel и преобразует его в вывод файла json.У меня есть столбец на листе Excel, где значения являются «Запланированные» или «Незапланированные».

1) В выводе json я хочу, чтобы Запланированные были заменены на «1», а Незапланированные -заменить на «2», не меняя ничего в файле Excel.2) На выходе я не хочу, чтобы «данные» появлялись.3) В Excel значение моего столбца Время начала выглядит так: «2018-11-16 08: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"
      }
   ]
}

1 Ответ

1 голос
/ 02 апреля 2019

Ответ на 1-й вопрос: Вы можете использовать условное присвоение.

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

Ответ на второй вопрос: Используйте loaddata = data, который будет массивом jsons без data в качестве ключа json.

Ответ на 3-й вопрос:

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

...