108 lines
4.0 KiB
Python
108 lines
4.0 KiB
Python
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.")
|