Python Generi c Data Engine - PullRequest
       9

Python Generi c Data Engine

0 голосов
/ 29 февраля 2020

Я работал над Python около 1,5 лет и искал направление. Это первый раз, когда я не могу найти то, что мне нужно после долгих поисков, и, должно быть, что-то упустил - скорее всего, поиск неправильных терминов.

Проблема : я работаю над приложение, которое имеет много процессов (может быть сотни или даже тысячи). Каждый процесс может иметь уникальный формат входных и выходных данных - это могут быть многострочные строки , строки, разделенные запятыми , excel или csv с или без изменения заголовков и многих других. Мне нужно что-то, что будет правильно форматировать ввод и обрабатывать вывод на основе процесса. Новые процессы также должны быть легко добавлены / определены. Я открыт для любого наилучшего подхода, но мои мысли состоят в том, чтобы использовать базу данных, в которой хранится определение шаблона / данных, и использовать ее для определения формата, заданного процессом. Тем не менее, я изо всех сил пытаюсь придумать, как именно, если это действительно лучший подход, но это должно быть масштабируемое решение. Любое направление будет оценено. Спасибо.

Пара простых примеров данных

Обработка 1 примера данных (многострочная строка с заголовком) Ввод

 [ABC123, XYZ453, CDE987]

и результирующий ввод данных ниже будет создан:

Barcode
ABC123
XYZ453
CDE987

Этот код ниже работает, но не может использоваться повторно для примера 2.

list = [ABC123, XYZ453, CDE987]

input = "Barcode /r/n"

for l in list:
    input = input + l + '/r/n'

Пример шаблона ввода процесса 2 ( запятая, разделенная заголовком):

Barcode,Location,Param1,Param2
Item1,L1,11,A
Item1,L1,22,B
Item2,L1,33,C
Item2,L2,44,F 
Item3,L2,55,B
Item3,L2,66,P

Пример процесса, полученный в результате ввода данных 2 (запятая, разделенная заголовком): Ввод

{'Barcode':['ABC123', 'XYZ453', 'CDE987', 'FGH487', 'YTR123'], 'Location':['Shelf1', 'Shelf2']}

и использование ниже приведен шаблон для создания входных данных:

Barcode,Location,Param1,Param2
ABC123,Shelf1,11,A
ABC123,Shelf1,22,B
XYZ453,Shelf1,33,C
XYZ453,Shelf2,44,F 
CDE987,Shelf2,55,B
CDE987,Shelf2,66,P
FGH487,Shelf1,11,A
FGH487,Shelf1,22,B
YTR123,Shelf1,33,C
YTR123,Shelf2,44,F 

Я знаю, как обрабатывать каждый процесс с помощью жестко закодированных циклов / слияния фреймов данных и т. д. c. Я сделал некоторую абстракцию в других случаях с диктовками. Однако, как определить / сохранить каждый формат, который так сильно различается, и создать абстрагируемый код многократного использования - вот где я застрял.

1 Ответ

0 голосов
/ 29 февраля 2020

Может быть, вы можете сделать вывод функций в виде кортежа с клавишами «тип данных» и «выход» для фактического вывода

...