data = [ ('1001', '现金', '', '', ''), ('1002', '银行存款', '', '', ''), ('1009', '其他货币资金', '', '', ''), ('1009.01', '外埠存款', '', '', 'True'), ('1009.02', '银行本票', '', '', 'True'), ('1009.03', '银行汇票', '', '', 'True'), ('1009.04', '信用卡', '', '', 'True'), ('1009.05', '信用证保证金', '', '', 'True'), ('1009.06', '存出投资款', '', '', 'True'), ('1101', '短期投资', '', '', ''), ('1101.01', '股票', '', '', 'True'), ('1101.02', '债券', '', '', 'True'), ('1101.03', '基金', '', '', 'True'), ('1101.10', '其他', '', '', 'True'), ('1102', '短期投资跌价准备', '', '', ''), ('1111', '应收票据', '', '', ''), ('1121', '应收股利', '', '', ''), ('1122', '应收利息', '', '', ''), ]

level_dict = {} last_level = '' for item in data: code, name, level, child_code, is_last = item level_list = code.split('.') if len(level_list) == 1: level_dict[code] = (1, '', False) last_level = code else: parent_code = '.'.join(level_list[:-1]) parent_level, _, _ = level_dict[parent_code] level_dict[code] = (parent_level+1, parent_code, is_last=='True') child_code_list = child_code.split(',') child_code_str = '' for child in child_code_list: if child: child_code_str += f"{last_level}.{child}," if child_code_str: child_code_str = child_code_str[:-1] level_dict[code] = (level_dict[code][0], level_dict[code][1], level_dict[code][2], child_code_str)

print("code,name,level,child_code,is_last") for item in data: code, name, _, _, _ = item level, parent_code, is_last, child_code = level_dict[code] child_code = child_code if child_code else ',' is_last = 'True' if is_last else '' print(f"{code},{name},{level},{child_code},{is_last}"

下面data列表里的每级科目使用号进行分隔不使用pandas写出实现对data的科目级别=level、子级科目代码=child_code、是否末级=is_last字段进行填充要求child_code之间使用分隔符分隔的python代码codenamelevelchild_codeis_last1001现金1002银行存款1009其他货币资金100901外埠存款100902银行本票100903银行汇

原文地址: https://www.cveoy.top/t/topic/eYIP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录