You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从无序TXT文件提取同类建筑模拟条目并整理为结构化列表

建筑模拟TXT条目分类解决方案

针对无序TXT文件中SimulationControl、Building、SizingPeriod:DesignDay三类条目的分类需求,之前的起止字符串方法失效,核心原因是这类建筑模拟条目(如EnergyPlus输入文件)常跨多行、条目顺序混乱,单纯的行起止匹配无法准确识别完整条目块。以下是可行的块识别分类方案:

核心思路

这类条目块有明确的特征:

  • 每个条目以指定类型名开头
  • 条目块以分号;作为结束标记(支持跨多行)
  • 需跳过空行和注释行(通常以!开头)

基于完整条目块的识别,再匹配类型分类,就能解决无序、跨行的问题。

实现示例(Python)

# 初始化三个目标列表
simulation = []
building = []
sizingperiod = []

# 建立类型与目标列表的映射,方便扩展
type_mapping = {
    "SimulationControl": simulation,
    "Building": building,
    "SizingPeriod:DesignDay": sizingperiod
}

# 读取目标TXT文件
with open("building_simulation.txt", "r", encoding="utf-8") as f:
    raw_lines = f.readlines()

current_entry_block = []
for line in raw_lines:
    cleaned_line = line.strip()
    # 跳过空行和注释行
    if not cleaned_line or cleaned_line.startswith("!"):
        continue
    current_entry_block.append(line.rstrip("\n"))
    # 识别条目块结束标记
    if ";" in cleaned_line:
        # 提取条目的类型名(取块首行第一个空格前的内容)
        first_line = current_entry_block[0].strip()
        entry_type = first_line.split()[0]
        # 匹配类型并加入对应列表
        if entry_type in type_mapping:
            type_mapping[entry_type].append("\n".join(current_entry_block))
        # 重置当前块,准备下一个条目
        current_entry_block = []

# 验证输出示例
print("=== SimulationControl 条目 ===")
for item in simulation:
    print(item)
    print("---")

关键细节说明

  1. 块拆分逻辑:逐行收集内容,直到遇到包含;的行,判定为一个完整条目块,避免跨行条目被拆分。
  2. 类型匹配:通过块首行的第一个字符串确定条目类型,不受后续行内容干扰。
  3. 容错处理:自动跳过空行和注释行,避免无效内容影响分类结果。

内容的提问来源于stack exchange,提问作者jose paulo Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:35:22