import os, sys, re sys.stdout.reconfigure(encoding='utf-8') ch13_path = "resources/knowledge/original/원가계산/건설공사_표준품셈/04_기계설비부문/제13장_플랜트설비공사.md" with open(ch13_path, 'r', encoding='utf-8') as f: text = f.read() # 1. L459 (Flange Type Valve) # Notice: old_l459 lines = text.split('\n') target_idx = -1 for i, l in enumerate(lines): if l.startswith("| ø50 65 80 90 100 125 150 200 250 300 350 400 450 500 600 | 0.100 0.133"): target_idx = i break if target_idx != -1: l_str = lines[target_idx] cells = [c.strip() for c in l_str.split('|')[1:-1]] specs = cells[0].split() # 15 specs # cells 1..10 each have 15 or 10 values (col 11, 12 have 10 values) cols = [c.split() for c in cells] rows = [] for r_i in range(len(specs)): r = [specs[r_i]] for c_i in range(1, len(cols)): vals = cols[c_i] val = vals[r_i] if r_i < len(vals) else "-" r.append(val) rows.append("| " + " | ".join(r) + " |") lines[target_idx] = "\n".join(rows) print("Fixed Flange Type Valve table (15 rows)") # 2. Check 13-1-4 Fitting Screwed / Welded (around L492) for i, l in enumerate(lines): if l.startswith("| ø50 65 80 90 100 150 200 250 300 350 400 450 500 600 |"): cells = [c.strip() for c in l.split('|')[1:-1]] specs = cells[0].split() cols = [c.split() for c in cells] rows = [] for r_i in range(len(specs)): r = [specs[r_i]] for c_i in range(1, len(cols)): vals = cols[c_i] val = vals[r_i] if r_i < len(vals) else "-" r.append(val) rows.append("| " + " | ".join(r) + " |") lines[i] = "\n".join(rows) print(f"Fixed Fitting table at line {i+1} ({len(specs)} rows)") # 3. Check phi 50..600 table (around L542) for i, l in enumerate(lines): if l.startswith("| φ 50 65 80 90 100 125 150 200 250 300 350 400 450 500 600 |"): cells = [c.strip() for c in l.split('|')[1:-1]] specs = cells[0].split() cols = [c.split() for c in cells] rows = [] for r_i in range(len(specs)): r = [specs[r_i]] for c_i in range(1, len(cols)): vals = cols[c_i] val = vals[r_i] if r_i < len(vals) else "-" r.append(val) rows.append("| " + " | ".join(r) + " |") lines[i] = "\n".join(rows) print(f"Fixed phi table at line {i+1} ({len(specs)} rows)") # 4. Check phi 15..350 table (around L852) for i, l in enumerate(lines): if l.startswith("| φ 15 20 25 40 50 65 80 90 100 125 150 200 250 300 350 |"): cells = [c.strip() for c in l.split('|')[1:-1]] specs = cells[0].split() cols = [c.split() for c in cells] rows = [] for r_i in range(len(specs)): r = [specs[r_i]] for c_i in range(1, len(cols)): vals = cols[c_i] val = vals[r_i] if r_i < len(vals) else "-" r.append(val) rows.append("| " + " | ".join(r) + " |") lines[i] = "\n".join(rows) print(f"Fixed phi 15..350 table at line {i+1} ({len(specs)} rows)") # 5. Check phi 15..150 table (around L882) for i, l in enumerate(lines): if l.startswith("| φ 15 20 25 40 50 65 80 90 100 125 150 |"): cells = [c.strip() for c in l.split('|')[1:-1]] specs = cells[0].split() cols = [c.split() for c in cells] rows = [] for r_i in range(len(specs)): r = [specs[r_i]] for c_i in range(1, len(cols)): vals = cols[c_i] val = vals[r_i] if r_i < len(vals) else "-" r.append(val) rows.append("| " + " | ".join(r) + " |") lines[i] = "\n".join(rows) print(f"Fixed phi 15..150 table at line {i+1} ({len(specs)} rows)") text = "\n".join(lines) with open(ch13_path, 'w', encoding='utf-8') as f: f.write(text) print("Saved updated 제13장_플랜트설비공사.md successfully.")