Я перебираю каждую строку в листе Excel, используя импорт openpyxl, чтобы в конечном итоге создать большую строку Json, которую я могу передать в API.
Я перебираю каждую строку и выстраиваю свои json структура, мне нужно разделить значение ячейки на «||», а затем для каждого значения его необходимо добавить в качестве вложенного массива в секции json. В настоящее время я использую следующий код, и моя проблема в том, что я строю свой объект списка в моем для l oop и добавляю блок json к большему массиву, и он продолжает добавлять значения моего списка в течение каждого l oop. Поэтому я использовал метод .Clear () в списке, чтобы очистить его после каждого l oop ... но потом, когда я скомпилировал свой окончательный результат, мой список пуст. Это похоже на то, что он не сохраняет свои значения при добавлении в список каждый l oop. Я новичок в Python и дал ему хороший круговорот. Любые предложения в правильном направлении будут оценены. Почти как каждый l oop нуждается в своем собственном уникальном массиве для использования и хранения значений. Раздел тегов Json очищается в конечном выводе для каждой строки json ... когда в нем должны быть значения для каждой уникальной итерации.
Мой набор данных (у меня есть 3 строки в Excel). Вы можете видеть, что у меня есть значения, которые я хочу разделить в 7-м столбце. Это столбец, который я перебираю, чтобы разделить значения, поскольку они будут вложены в мою json.
Строка 1 (ячейки) = "AB C", "Тестирование", "Повторное тестирование" , "ДАТА", "ДАТА", Пусто, "A || B || C".
Строка 2 (ячейки) = "AB C 2", "Тестирование 2", "Тестирование Снова 2 "," ДАТА "," ДАТА ", Пусто," X || Y || Z ".
Строка 3 (ячейки) =" AB C 3 "," Проверка 3 "," Тестирование снова 3 "," ДАТА "," ДАТА ", Пусто, Пусто.
Мой код.
#from openpyxl import Workbook
import json
from openpyxl import load_workbook
output_table = input_table.copy()
var_path_excel_file = flow_variables['Location']
workbook = load_workbook(filename=var_path_excel_file)
sheet = workbook.active
#create a null value to be used
emptyString = "Null"
#list out all of the sections of the json that we want to print out - these are based on the inputs
jsonFull = []
jsondata = {}
tags = []
for value in sheet.iter_rows(min_row=2,min_col=0,max_col=40,values_only=True):
#I add my split values to an array so that way when i add the array to the json it will have the proper brackets i need for the API to run correctly
if value[6] is not None:
data = value[6].split(" || ")
for temp in data:
tags.append(temp)
#I build out the json structure here that will be added for each excel row basically
jsondata = {
"name": value[0],
"short_description": value[1],
"long_description": value[2],
"effective_start_date": value[3],
"effective_end_date": value[4],
"workflow_state": emptyString,
"tags": tags
}
#Add the jsondata row to the larger collection
jsonFull.append(jsondata)
tags.clear()
print(json.dumps(jsonFull))
И тогда желаемый результат будет примерно таким это. Мне просто нужно выяснить правильный синтаксис для обработки списка ... и я не могу найти пример, основанный на.
[
{
"name": "ABC",
"short_description": "Testing",
"long_description": "Testing Again",
"effective_start_date": "2020-03-04T14:45:22Z",
"effective_end_date": "2020-03-04T14:45:22Z",
"workflow_state": "Null",
"tags": [
"A",
"B",
"C"
]
},
{
"name": "ABC 2",
"short_description": "Testing 2",
"long_description": "Testing Again 2",
"effective_start_date": "2020-03-04T14:45:22Z",
"effective_end_date": "2020-03-04T14:45:22Z",
"workflow_state": "Null",
"tags": [
"X",
"Y",
"Z"
]
},
{
"name": "ABC 3",
"short_description": "Testing 3",
"long_description": "Testing Again 3",
"effective_start_date": "2020-03-04T14:45:22Z",
"effective_end_date": "2020-03-04T14:45:22Z",
"workflow_state": "Null",
"tags": [
]
}
]