Python读取文本块数据 转换为A-G字段对应嵌套列表的实现问题
调整后可直接输出目标结构的完整代码
# 定义A到G的固定排序规则 key_order = ["A", "B", "C", "D", "E", "F", "G"] result = [] # 读取文件内容 with open("file.txt", "r", encoding="utf-8") as f: content = f.read() # 按ENDBLOCK拆分外层大块,过滤空块 raw_blocks = [b for b in content.split("--- ENDBLOCK") if b.strip()] for raw_block in raw_blocks: current_block = [] # 拆分当前大块内的所有子块,过滤空内容 sub_blocks = [sb.strip() for sb in raw_block.split("\n\n") if sb.strip()] for sub_block in sub_blocks: # 跳过无关内容:无等号、包含RETCODE的行块 if " = " not in sub_block or "RETCODE" in sub_block: continue # 子块转键值对字典 kv_map = {} for line in sub_block.split("\n"): line = line.strip() if not line: continue k, v = line.split(" = ") # 若需要值为字符串则去掉int()包裹 kv_map[k] = int(v) # 按A-G顺序生成子列表,无对应值留空 sorted_item = [kv_map.get(key, "") for key in key_order] current_block.append(sorted_item) if current_block: result.append(current_block) # 格式化输出验证 import json print(json.dumps(result, indent=4))
核心调整点
- 保留了外层大块的层级边界,不会将所有子块混为同一层级
- 新增固定键位映射逻辑,严格按A-G顺序生成子列表,不存在的键自动留空
- 增加多级内容过滤,避免无关的提示文本、空行被误识别为有效子块
运行上述代码即可直接得到你要求的嵌套列表结构。
内容的提问来源于stack exchange,提问作者Ger Cas
相关产品推荐
相关产品推荐

