#!/usr/bin/env python # -*- coding:utf-8 -*- import json from predict import dict_predict, kw_predict, txt_predict from utils.status import code2msg, Status class PredictorFac: Status = Status def __init__(self): self.kw_predictor = kw_predict.KwPredict('single') self.dict_predictor = dict_predict.DicPredict('dict') self.txt_predictor = txt_predict.TxtPredict('txt') def _get_predictor(self, data, predict_type): if isinstance(data, dict): return self.dict_predictor elif isinstance(data, list): if predict_type == 'all': return self.txt_predictor elif predict_type == 'param': return self.kw_predictor else: return self.kw_predictor def predict(self, dic_data, predict_type='all'): predictor = self._get_predictor(dic_data, predict_type) res = predictor.predict(dic_data, predict_type) if predict_type == 'all': try: if isinstance(predictor, dict_predict.DicPredict): if '数量' not in str(res): raise self.Status.NoQtyError if '参数' not in str(res) and '型号' not in str(res): raise self.Status.NoParamGnError return 1, res except Status.StatusErrTup as e: stat_code = e.value return stat_code, code2msg(stat_code) elif predict_type == 'param': return 1, res elif predict_type == 'brand': return 1, res elif predict_type == 'gn': return 1, res if __name__ == "__main__": def get_test_data(): import pandas as pd import json df = pd.read_excel(r'C:\Users\ICHUNT\Desktop\bomlist\BOM_型号匹配问题.xls', header=None) df.fillna('?', inplace=True) dic_dft = df.to_dict(orient='list') return dic_dft p = PredictorFac() # data = get_test_data() # data = {} # pretty_col = {'第%s列' % k: v for k, v in data.items()} # print(pretty_col) data=['lm358dt 3', 'C0806fwefhkds 5k'] data = json.dumps(data) res = p.predict(data, predict_type='all') print(res)