Browse Source

excel_util: 增加模块行为关联信息获取方法

Signed-off-by: binren <zhangbr@elab-plus.com>
binren 5 years ago
parent
commit
973bcb7577
1 changed files with 39 additions and 2 deletions
  1. 39 2
      excel_util.py

+ 39 - 2
excel_util.py

@@ -32,6 +32,12 @@ class ExcelUtil:
         # print('max_row:{}, max_col:{}'.format(work_sheet.max_row, work_sheet.max_column))
         return work_sheet
 
+    def read_excel_by_ox_name(self, sheet_name):
+        work_book = ox.load_workbook(self.path, data_only=True)
+        work_sheet = work_book.get_sheet_by_name(sheet_name)
+        # print('max_row:{}, max_col:{}'.format(work_sheet.max_row, work_sheet.max_column))
+        return work_sheet
+
     def init_crowd_info(self):
         """
             整理不同人群包含的父选序号
@@ -147,8 +153,39 @@ class ExcelUtil:
             results[name] = sub_results
         return results
 
+    def module_behavior_info(self):
+        """
+            构建模块和行为的关联信息
+        :return:
+        """
+        work_sheet = self.read_excel_by_ox_name('行为-模块映射表')
+        max_column = work_sheet.max_column
+        rows = [row for row in work_sheet.rows][1:]
+        infos = []
+        for row in rows:
+            behavior_name = row[1].value
+            for i in range(2, max_column - 1):
+                module_name = row[i].value
+                if module_name:
+                    if i == 2:
+                        weight = 1
+                    else:
+                        weight = 0.5
+                    infos.append([row[i].value, behavior_name, weight])
+        infos.sort(key=lambda obj: obj[0])
+        result = {}
+        for key, data in groupby(infos, key=lambda obj: obj[0]):
+            behavior_data = []
+            for dt in data:
+                dt_list = [x for x in dt]
+                if len(behavior_data) <= 14:
+                    behavior_data.append([dt_list[1], dt_list[2]])
+            result[key] = behavior_data
+        return result
+
 
 if __name__ == '__main__':
     import json
-    eu = ExcelUtil().init_mvp_data()
-    print(json.dumps(eu, ensure_ascii=False))
+    eu = ExcelUtil(file_name=r'D:\elab\elab_mvp\resources\module.xlsx')
+    data = eu.module_behavior_info()
+    print(json.dumps(data, ensure_ascii=False))