如何使用 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")
我的 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")