CSV Report Writer은(는) 무엇을 하나요?
이 스킬은 작업이 결과 행 목록을 생성할 때, 스프레드시트용 CSV와 PR 코멘트(또는 Telegram 요약)용 마크다운 테이블을 함께 만들고 싶을 때 사용합니다. 하나의 컬럼 정의를 사용하므로 두 출력이 어긋나지 않습니다. 컬럼(키, 헤더, 선택적 포맷터)을 한 번 선언하면, 헬퍼 함수가 안정적인 컬럼 순서로 CSV 인용과 마크다운 파이프 이스케이프를 처리하여 두 출력을 모두 생성합니다. pandas가 필요 없습니다.
호출 시점
- 사용자가 "결과를 CSV로 저장해", "보고서로 내보내줘", "이걸 마크다운 테이블로 만들어줘", "실행 결과를 스프레드시트로 저장해"라고 말할 때.
- 대화 중인 코드에
list[dict](또는 객체 리스트)가 있고 현재 임시로 출력 중인 경우.
호출하지 말아야 할 때
- 데이터에 실제 데이터프레임 작업(조인, 그룹화, 피벗)이 필요한 경우 → pandas/polars를 사용하세요.
- 단일 스칼라 결과인 경우 → CSV/테이블이 과합니다.
구체적인 예시
사용자 입력:
스캔한 토큰 목록에 점수와 가격이 있어요. CSV로 저장하고 Telegram 요약용 마크다운 테이블도 만들어 주세요.
출력:
# assets/report.py를 프로젝트에 복사한 후:
from report import Column, write_csv, to_markdown
columns = [
Column("symbol", "Symbol"),
Column("score", "Score", fmt=lambda v: f"{v:.1f}"),
Column("price_usd", "Price", fmt=lambda v: f"${v:,.4f}"),
]
rows = [
{"symbol": "ABC", "score": 8.4, "price_usd": 0.0123},
{"symbol": "XYZ", "score": 6.1, "price_usd": 1.5},
]
write_csv("scan.csv", columns, rows) # 스키마가 적용된 CSV, 안정적인 컬럼 순서
print(to_markdown(columns, rows)) # 동일한 컬럼, 마크다운 테이블
두 출력 모두 정확히 동일한 컬럼과 순서를 사용하므로 CSV와 요약 테이블이 항상 일치합니다.
적용 패턴
- 각
Column(key, header, fmt=...)을 한 번 선언합니다. 두 작성자가 동일한 리스트를 사용하므로 헤더와 순서가 동기화됩니다. - 컬럼 순서를 안정적이고 명시적으로 유지합니다. 임의 행의 딕셔너리 삽입 순서에 의존하지 마세요.
fmt콜러블이 표현(통화, 반올림)을 담당하게 하고, 행 딕셔너리에는 원시값을 저장합니다.csv.writer를 사용하여 올바른 인용 처리를 합니다. 마크다운 테이블에서는|와 줄바꿈 문자를 이스케이프하여 레이아웃이 깨지지 않도록 합니다.- 누락된 키는 오류를 발생시키지 않고 빈 셀로 처리하여 부분적인 행도 보고할 수 있게 합니다.
참조: assets/report.py.
출처
저자의 자동화 프로젝트에서 실제 사용을 통해 정제되었습니다. v1.0.0. 참고: [[pr-body-formatter]], [[sqlite-state]], [[telegram-alerter]].
→ Trawlkit으로 완전한 실행 가능한 봇을 구축하세요.