import os, sys, re sys.stdout.reconfigure(encoding='utf-8') # Exclude 제9장_측량 for now as survey has long formal names like '작업계획 및 준비' target_files = [ # 02_토목부문 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제1장_도로포장공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제2장_하천공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제3장_터널공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제4장_궤도공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제5장_강구조공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제6장_관부설및접합공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제7장_항만공사.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/02_토목부문/제8장_지반조사.md', # 05_유지관리부문 'resources/knowledge/original/원가계산/건설공사_표준품셈/05_유지관리부문/제1장_공통.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/05_유지관리부문/제2장_토목.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/05_유지관리부문/제3장_건축.md', 'resources/knowledge/original/원가계산/건설공사_표준품셈/05_유지관리부문/제4장_기계설비.md', # 04_기계설비부문 제13장 'resources/knowledge/original/원가계산/건설공사_표준품셈/04_기계설비부문/제13장_플랜트설비공사.md', ] print("=== Scanning non-survey files for split Col 0 ===") for fpath in target_files: fname = os.path.basename(fpath) with open(fpath, 'r', encoding='utf-8') as f: lines = f.readlines() found_in_f = [] for idx, line in enumerate(lines): if not line.startswith('|'): continue cells = [c.strip() for c in line.split('|')[1:-1]] if not cells or all(re.match(r'^:?-+:?$', c) for c in cells if c): continue c0 = cells[0] # Check if c0 is a continuation of previous line or fragmented words if c0 in ['구 간', '구간', '설 치', '설치', '후 설치', '후설치', '조립 설치', '조립설치', '취급함.', '정돈함.', '조양함', '매 립 식', '( 직 결 형 )', '설 준 비', 'P C T', '목 침 목', '→ P C T', '교 환', '분기기', '교 량', '터 널', '상', '중', '수']: found_in_f.append((idx + 1, c0, line.strip()[:90])) elif re.match(r'^(하고|하며|하여|혹은|및|등|까지|위해|위하여|취부함)\b', c0): found_in_f.append((idx + 1, c0, line.strip()[:90])) elif any(c0.endswith(tail) for tail in ['하고', '하며', '혹은', '위해', '위하여', '운반,']): found_in_f.append((idx + 1, c0, line.strip()[:90])) if found_in_f: print(f"\n[{fname}] ({len(found_in_f)}건)") for lno, c0, lstr in found_in_f: print(f" L{lno:<5} | '{c0}' | {lstr}")