마크다운 표 CSV 변환 — AI 답변 속 표를 파이썬으로 CSV·엑셀 파일로 바꾸기 (실측)

마크다운 표 CSV 변환 — AI 답변 속 표를 파이썬으로 CSV·엑셀 파일로 바꾸기 (실측)

ChatGPT나 Claude에게 “표로 정리해 줘”라고 하면 답변은 | 지점 | 매출 | 같은 마크다운 표로 옵니다. 화면에서는 보기 좋지만 엑셀로 옮기려고 복사해 붙여 넣으면 한 칸에 줄 전체가 들어가거나 세로 막대가 그대로 남습니다. 이 글에서는 마크다운 표 CSV 변환 스크립트를 파이썬으로 만들어, AI 답변 텍스트를 통째로 넣으면 표만 골라 CSV와 엑셀(xlsx) 파일로 저장하는 과정을 직접 … 더 읽기

개인정보 마스킹 파이썬 — AI에 문서 넣기 전 전화·이메일·주민번호를 정규식으로 가리고 되돌리기 (실측)

개인정보 마스킹 파이썬 — AI에 문서 넣기 전 전화·이메일·주민번호를 정규식으로 가리고 되돌리기 (실측)

고객 문의나 상담 기록을 ChatGPT·Claude 같은 AI에 붙여 넣고 “정리해 줘”라고 하면 편하지만, 그 안의 전화번호·이메일·주민번호까지 그대로 외부 서비스로 나갑니다. 이 글에서는 개인정보 마스킹 파이썬 스크립트를 표준 라이브러리만으로 만들어, 보내기 전에 개인정보를 [전화_1] 같은 토큰으로 바꾸고 AI 답변이 돌아오면 원래 값으로 되돌리는 과정을 직접 돌려 봅니다. 처음 실행에서는 16자리 주문번호가 카드번호로 잘못 분류됐고, 인터넷에 흔한 … 더 읽기

폴더 동기화 파이썬 스크립트 — 두 폴더를 비교해 바뀐 파일만 복사하기, 2,000개 중 35개만 0.03초 (실측)

폴더 동기화 파이썬 스크립트 — 두 폴더를 비교해 바뀐 파일만 복사하기, 2,000개 중 35개만 0.03초 (실측)

작업 폴더를 외장 디스크나 다른 드라이브에 백업할 때 매번 폴더째 통째로 복사하면, 바뀐 건 몇 개뿐인데도 전체를 다시 씁니다. 이 글에서는 폴더 동기화 파이썬 스크립트를 표준 라이브러리만으로 만들어, 두 폴더를 비교한 뒤 새로 생기거나 바뀐 파일만 복사하고 필요하면 원본에서 지운 파일도 정리하게 해 봅니다. 직접 2,000개 파일(약 100MB) 폴더로 돌려 보니 처음 전체 복사는 1.774초, … 더 읽기

RecursionError 해결 — 재귀 깊이 초과 원인과 반복문으로 바꾸기 (실측)

RecursionError 해결 — 재귀 깊이 초과 원인과 반복문으로 바꾸기 (실측)

파이썬에서 트리 구조 데이터를 재귀 함수로 훑다가 RecursionError: maximum recursion depth exceeded를 만나면 보통 “재귀 한도가 1000이니까 1000단계를 넘었구나” 하고 sys.setrecursionlimit()부터 올립니다. 그런데 직접 돌려 보니 단순하지 않았습니다. 중첩 댓글 개수를 세는 함수가 한도 1000에서 깊이 499에 멈췄고, 한도를 100만으로 올려도 어떤 재귀는 약 1,500단계에서 그대로 같은 오류를 냈습니다. 이 글에서는 RecursionError가 나는 실제 경계, … 더 읽기

RAG 원리 — AI 문서 검색을 TF-IDF 검색기로 직접 만들어 보기, 내 블로그 68편에서 질문 15개 실측

RAG 원리 — AI 문서 검색을 TF-IDF 검색기로 직접 만들어 보기, 내 블로그 68편에서 질문 15개 실측

사내 문서나 매뉴얼을 넣어 두고 “우리 자료 기준으로 답해 줘”라고 하는 AI 서비스는 대부분 RAG(검색 증강 생성) 방식입니다. 이름은 어렵지만 RAG 원리는 단순합니다. 질문과 관련 있는 문서 조각을 먼저 찾고, 그 조각만 질문과 함께 AI에 넘깁니다. 문서 전체를 넣을 수 없으니 “무엇을 골라 넣느냐”가 답의 품질을 좌우합니다. 그래서 그 검색 부분을 파이썬 표준 라이브러리만으로 직접 … 더 읽기

파이썬 sqlite 사용법 — 스크립트 데이터를 CSV 대신 SQLite에 저장하기, 2,000건 17초가 20만 건 0.8초로 (실측)

파이썬 sqlite 사용법 — 스크립트 데이터를 CSV 대신 SQLite에 저장하기, 2,000건 17초가 20만 건 0.8초로 (실측)

자동화 스크립트의 실행 기록이나 수집한 데이터를 CSV에 한 줄씩 붙여 두는 경우가 많습니다. 처음엔 편하지만 쌓일수록 불편해집니다. 조회할 때마다 파일 전체를 읽어야 하고, 스크립트가 두 번 돌면 같은 기록이 두 줄 들어가고, 두 스크립트가 동시에 쓰면 꼬입니다. 그래서 파이썬 sqlite 사용법을 실제 측정으로 정리해 봤습니다. sqlite3는 파이썬에 기본으로 들어 있어서 설치할 것이 없습니다. 실행 기록 … 더 읽기

깨진 링크 찾기 파이썬 스크립트 — 내 블로그 점검해 보니 경고 47개 중 22개가 오탐이었던 이유 (실측)

깨진 링크 찾기 파이썬 스크립트 — 내 블로그 점검해 보니 경고 47개 중 22개가 오탐이었던 이유 (실측)

글이 쌓이면 예전 글 속 링크가 하나둘 죽습니다. 지운 글, 주소가 바뀐 페이지, 사라진 이미지가 그대로 남습니다. 방문자는 404 화면을 보고 떠나고, 운영자는 아무도 알려 주지 않으니 모릅니다. 그래서 깨진 링크 찾기 파이썬 스크립트를 표준 라이브러리만으로 만들어 이 블로그(codetipbox.com)에 직접 돌려 봤습니다. 첫 실행 결과는 “깨진 링크 47개”였는데, 하나씩 열어 보니 22개는 스크립트 쪽 오탐이었습니다. … 더 읽기

JSONDecodeError 해결 — 깨진 JSON 파일에서 틀린 곳 정확히 찾아내기 (10가지 유형 실측)

JSONDecodeError 해결 — 깨진 JSON 파일에서 틀린 곳 정확히 찾아내기 (10가지 유형 실측)

설정 파일이나 API 응답을 json.load()로 읽다가 JSONDecodeError가 나면 메시지에 줄과 칸 번호가 찍힙니다. 그런데 그 위치로 가 봐도 틀린 게 안 보일 때가 많습니다. 직접 깨진 JSON 파일 10종을 만들어 돌려 보니, 쉼표가 빠진 파일은 쉼표가 빠진 6번 줄이 아니라 다음 줄인 7번 줄을 가리켰고, 원인이 다른 세 파일(마지막 쉼표·작은따옴표·주석)은 똑같은 메시지를 냈습니다. 이 글에서는 … 더 읽기

프롬프트 토큰 수 미리 세기 — 글자 수 어림과 실제 차이 실측 (tiktoken)

프롬프트 토큰 수 미리 세기 — 글자 수 어림과 실제 차이 실측 (tiktoken)

AI에 긴 문서를 넣기 전에 “이게 몇 토큰이지?”를 글자 수로 어림하는 경우가 많습니다. 흔히 듣는 기준이 “4글자에 1토큰”인데, 한글 글에서는 크게 빗나갑니다. 이 블로그에 실제로 발행한 한글 원고로 토큰 수 계산을 tiktoken으로 해 보니, 4글자=1토큰으로 어림한 값은 실제의 절반 정도(-42~-53%)였습니다. 영어 문서에서는 +16%로 꽤 맞았는데도요. 이 글에서는 tiktoken 설치와 처음 만난 SSL 오류, 글 종류별 … 더 읽기

파이썬 cProfile 사용법 — 느린 스크립트 병목 찾기, 2.9초를 0.3초로 (실측)

파이썬 cProfile 사용법 — 느린 스크립트 병목 찾기, 2.9초를 0.3초로 (실측)

매일 돌리는 파이썬 스크립트가 점점 느려지는데 어디가 느린지 모를 때, 감으로 코드를 고치기 시작하면 엉뚱한 곳에 시간을 쓰기 쉽습니다. 파이썬 cProfile 사용법을 알면 설치 없이 명령 한 줄로 “어느 함수가 몇 번 불려 몇 초를 썼는지” 표로 볼 수 있습니다. 접속 로그 10만 줄을 요약하는 스크립트로 직접 해 보니, 처음 버전은 2.92초가 걸렸고 cProfile 표를 … 더 읽기