代码拉取完成,页面将自动刷新
import warnings
from dataclasses import dataclass
from typing import List, Dict
from openpyxl import load_workbook
import requests
import json
from import_struct_field import save_data_structs
from model.consts import BASE_URL, HEADERS, EXCEL_FILE_PATH
from model.excel_utils import process_merged_cells
from model.json_utils import default_encoder
from model.model_def import LineStatistics, StructField
warnings.filterwarnings("ignore", category=UserWarning)
def parse_data_struct(workbook, sheet_index) -> Dict[str, List[StructField]]:
"""
解析数据结构函数
从指定的Excel文件中读取数据,并将数据结构映射存放在一个字典中。
返回值:
data_struct_map (dict): 数据结构映射的字典,将数据结构名称作为键,对应的值为数据字段键的列表
"""
# 打开 Excel 文件
# 风险模型表单
sheet = workbook.worksheets[sheet_index]
merged_cells = process_merged_cells(sheet)
data_struct_map: Dict[str, List[StructField]] = {}
# 行统计信息,用于调试数据缺失
line_statistics = LineStatistics()
# 读取数据
for row_number, row in enumerate(sheet.iter_rows(), start=1):
line_statistics.total += 1
# row,col 和 row[index] 中的index 下标不同,index 0开始, merged_cells 中 1开始
struct_name, field_name, field_key = (
row[0].value if row[0].value is not None else merged_cells.get((row_number, 1)),
row[1].value if row[1].value is not None else merged_cells.get((row_number, 2)),
row[2].value if row[2].value is not None else merged_cells.get((row_number, 3)))
if not (struct_name and field_name and field_key):
line_statistics.fail += 1
print(f"failed data {row_number}: {struct_name} {field_name} {field_key}")
continue
struct_name = struct_name.replace('\n', '')
if struct_name in data_struct_map:
data_struct_map[struct_name].append(StructField(field_name, field_key))
else:
data_struct_map[struct_name] = [StructField(field_name, field_key)]
line_statistics.success += 1
print(data_struct_map)
print(f'line statistics: {line_statistics}')
return data_struct_map
def main():
# 解析
workbook = load_workbook(filename=EXCEL_FILE_PATH)
struct_fields_map = parse_data_struct(workbook, 2)
save_data_structs(struct_fields_map)
if __name__ == '__main__':
main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。