한 줄짜리 구조화 데이터를 추출하기
로그 줄이나 일정한 key=value 목록처럼 한 줄 안에서 모양이 반복되는 데이터는 캡처 그룹으로 필드를 나눌 수 있어. 중첩되거나 이스케이프 규칙이 복잡한 형식은 전용 파서에 맡겨.
로그 줄의 필드 이름 붙이기
IP, 날짜, 메서드, 경로, 상태 코드, 바이트 수처럼 필요한 조각마다 이름 붙은 그룹을 두면 패턴 자체가 한 줄 형식의 명세처럼 읽혀. groupdict()로 결과를 바로 사전 형태로 받을 수도 있어.
key=value 쌍 추출하기
name=Pippa age=3 mood=warm에는 (\w+)=(\S+)와 findall을 쓸 수 있어. 따옴표 안에 공백을 허용하려면 (\w+)=(?:"([^"]*)"|(\S+))처럼 따옴표 값과 공백 없는 값을 대안으로 나눠.
패턴보다 먼저 모양을 적어
- 필드와 구분자를 자연어로 적어.
- 각 필드가 숫자, 16진수, 따옴표 문자열 중 무엇인지 정해.
- 필요한 필드를 이름 붙은 캡처 그룹으로 감싸.
- 정상 입력과 오류 입력, 경계 입력으로 시험해.
이 순서를 따르면 패턴이 데이터 형식의 설명서 역할까지 하게 돼.