99 lines
2.9 KiB
Python
99 lines
2.9 KiB
Python
import sqlite3
|
|
import re
|
|
|
|
def clean_text(text):
|
|
"""
|
|
텍스트에서 불필요한 접두어를 제거합니다.
|
|
|
|
Args:
|
|
text (str): 정제할 텍스트
|
|
|
|
Returns:
|
|
str: 정제된 텍스트
|
|
"""
|
|
if not text:
|
|
return text
|
|
|
|
# 다양한 접두어 제거
|
|
prefixes = [
|
|
"반응 : ", "반응\n1)", "반응\n0)",
|
|
"검지조건 : ", "검지조건\n1)", "검지조건\n0)",
|
|
"소거 : ", "소거조건\n1)", "소거조건\n0)",
|
|
"조치방법 : ", "조치방법\n1)", "조치방법\n0)",
|
|
"관련도면 : ", "관련도면\n1)", "관련도면\n0)"
|
|
]
|
|
|
|
for prefix in prefixes:
|
|
text = text.replace(prefix, '').strip()
|
|
|
|
return text.strip()
|
|
|
|
def extract_drawing(text):
|
|
"""
|
|
"회로 도면 : "으로 시작하는 내용을 추출합니다.
|
|
|
|
Args:
|
|
text (str): 원본 텍스트
|
|
|
|
Returns:
|
|
tuple: (정제된 action, drawing)
|
|
"""
|
|
if not text:
|
|
return text, None
|
|
|
|
# 회로 도면 추출
|
|
drawing_match = re.search(r'회로 도면 : (.+)', text)
|
|
drawing = drawing_match.group(1).strip() if drawing_match else None
|
|
|
|
# 회로 도면 부분 제거
|
|
if drawing:
|
|
text = re.sub(r'회로 도면 : .+', '', text).strip()
|
|
|
|
return text, drawing
|
|
|
|
def clean_database():
|
|
"""데이터베이스의 레코드를 정제합니다."""
|
|
conn = sqlite3.connect('fault_codes.db')
|
|
cursor = conn.cursor()
|
|
|
|
# 테이블의 모든 레코드 가져오기
|
|
cursor.execute("SELECT * FROM woojin200")
|
|
records = cursor.fetchall()
|
|
|
|
# 컬럼 이름 가져오기
|
|
cursor.execute("PRAGMA table_info(woojin200)")
|
|
columns = [column[1] for column in cursor.fetchall()]
|
|
|
|
# 업데이트할 레코드 준비
|
|
updated_records = []
|
|
|
|
for record in records:
|
|
record_dict = dict(zip(columns, record))
|
|
|
|
# 각 텍스트 필드 정제
|
|
record_dict['reaction'] = clean_text(record_dict['reaction'])
|
|
record_dict['detect_condition'] = clean_text(record_dict['detect_condition'])
|
|
record_dict['clear_condition'] = clean_text(record_dict['clear_condition'])
|
|
|
|
# action에서 drawing 추출
|
|
record_dict['action'], record_dict['drawing'] = extract_drawing(record_dict['action'])
|
|
record_dict['action'] = clean_text(record_dict['action'])
|
|
|
|
# 업데이트할 레코드 준비
|
|
updated_record = tuple(record_dict[col] for col in columns)
|
|
updated_records.append(updated_record)
|
|
|
|
# 테이블 업데이트
|
|
cursor.execute("DELETE FROM woojin200")
|
|
cursor.executemany(f"""
|
|
INSERT INTO woojin200 ({','.join(columns)})
|
|
VALUES ({','.join(['?']*len(columns))})
|
|
""", updated_records)
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
print("데이터베이스 정제 완료!")
|
|
|
|
if __name__ == "__main__":
|
|
clean_database() |