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

填充level、child_code、is_last

for i in range(len(data)): code, name, level, child_code, is_last = data[i] level = code.count(".") + 1 if i < len(data)-1 and data[i+1][code.count(".")].startswith(code): is_last = False if "." in code: child_code = ",".join([d[0] for d in data[i+1:] if d[0].startswith(code)]) data[i] = (code, name, level, child_code, is_last)

输出结果

for d in data: print(",".join([str(e) for e in d])

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

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

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